我想了解哈啤Fhir REST風格的服務器是如何工作的,我想實現對觀測資源的一些@Search方法。如何實現Hapi Fhir服務器的觀察資源提供者的搜索操作?
目前,我有這個@Read操作,這當試圖訪問該資源(像這樣:http://localhost:8080/NewFHIRServer/fhir)成功的作品從瀏覽器:
@Read()
public Observation readObservationById(@IdParam IdDt theId) {
for (Entry<Long, Deque<Observation>> entry : myPatientIdToObservations.entrySet())
{
for (Observation obs : entry.getValue()) {
if (obs.getId().equals(theId)) {
return obs;
}
}
}
throw new ResourceNotFoundException(theId);
}
但是,當我嘗試做了類似的事情@搜索操作,我收到錯誤。我希望能夠得到通過運行這樣的(或類似)的搜索響應:
Bundle response = client
.search()
.forResource(Observation.class)
.where(Observation.SUBJECT.hasId("Patient/1"))
.execute();
我需要什麼樣的參數在我@Read方法,以使這成爲可能?現在我得到的錯誤是:
此服務器上的FHIR端點不知道如何處理GET 操作[觀察]與參數[主題]
,它是顯而易見的,爲什麼它不工作,因爲我的頭看起來像這樣:
public Observation searchObservationById(@IdParam IdDt theId)
我一直在尋找的例子來揣摩了這一點,我不太明白這個參數的語法是指:
public List<Patient> getPatient(@RequiredParam(name = Patient.SP_FAMILY) StringParam theFamilyName)...
您將如何進行查詢以使用最後一個示例?
謝謝
我已經能夠通過看你的GitHub的文件運行爲患者搜索,但我無法做的觀察一樣,因爲我不知道要放什麼的參數。其中,(...),以獲得捆綁,當我查詢,我不知道要放什麼東西在我的@Search功能的報頭(例如,查詢所有觀察與給定的患者ID)。有什麼文件可以用來找出這個問題嗎? – randombee
要搜索資源的情況下,「A」,你想找到一個參考匹配資源「B」(例如找到一個給定主題的所有意見),你需要使用ReferenceParam。例如。 \t \t \t \t \t \t @OptionalParam(名稱= 「受試者」) \t \t \t ReferenceParam theSubject –