2014-10-09 35 views
0

我使用的是高致病性禽流感,FHIR庫,我想介紹一個新的搜索參數,以資源提供 例如:HL7高致病性禽流感,FHIR添加新的搜索參數去資源提供

@Read 
    public Patient getResourceById(@IdParam IdDt id, 
          @RequiredParam(name="session") String session){} 

但我有個例外

 
"ca.uhn.fhir.rest.server.ConfigurationException: Method[public ca.uhn.fhir.model.dstu.resource.Patient PatientResourceProvider.getResourceById(ca.uhn.fhir.model.primitive.IdDt,java.lang.String)] is not allowed to have a parameter annotated with @ca.uhn.fhir.rest.annotation.RequiredParam(compositeTypes=[], chainBlacklist=[], targetTypes=[], chainWhitelist=[*], name=session)" 

有什麼建議怎麼做?

回答

0

這裏的問題是這個方法是用@Read註釋的,所以它是一個「讀」/「vread」而不是「搜索」。要創建一個接受該參數的搜索方法,請複製現有方法,刪除第一個參數,然後將@Read更改爲@Search。

請注意,您可能還希望返回列表而不是患者,因爲搜索可以返回多個結果。

+0

謝謝你的迴應。問題是我必須爲每種方法引入一個新參數。我需要所有方法中的「會話」讀取,搜索,更新,創建...。我需要這個「會話」對象來呼叫我的服務。任何想法如何爲每種方法引入一個新的需求參數? – 2014-10-10 07:12:31

+0

或者對我來說,另一個合適的選擇是訪問資源提供者方法中的HttpServletRequest。 – 2014-10-10 10:05:49

+0

實際上,您可以將任何類型的HttpServletRequest(和/或HttpServeltResponse)參數添加到任何HAPI ResourceProvider方法,並且在執行方法之前,HAPI將自動將該對象注入方法參數中。如果您需要,可以讓您訪問底層會話。 – 2014-10-10 15:08:19

相關問題