簡體   English   中英

FHIR搜索中類似GROUP BY的功能

[英]GROUP BY-like function in FHIR Search

我正在使用最新版本的HapiFHIR(服務器端和客戶端),它們應符合HL7 FHIR。

作為我正在進行的項目的一部分,我需要獲取每個設備的最新觀察結果。 有SQL經驗,我自然希望使用GROUP BY這樣的操作來實現這一目標。 但是從閱讀文檔看來,HapiFHIR中沒有這樣的操作!

我有什么想念的嗎? ) for each device? 如果不是,那么為每個設備檢索最新的( )的最佳解決方法是什么?

當您使用FHIR時,它擁有一個不錯的REST搜索API,因此無需實現自己的查詢。

{{baseurl}}/Observation?device:Device=123&_sort=-_lastUpdated&_count=1

為您提供ID為123的設備的最新觀測值。

FHIR搜索API

編輯:由於您還使用HAPI客戶端,您的查詢代碼將如下所示:

Bundle results = myFhirCtx.newRestfulGenericClient("yourFHIRbaseURL")
        .search()
        .forResource(Observation.class)
        .where(Observation.DEVICE.hasId("123"))
        .sort().descending(Observation.DATE)
        .count(1)
        .returnBundle(Bundle.class)
        .execute();

上面的GET搜索設備的最新更新的觀察值,JAVA代碼根據其日期獲取最新的觀察值。 我想你的意思是第二。

已廢棄,因為這將在所有設備上返回最新的n個觀測值,而不是 對多個設備的 每個設備N個值

如果要一次查詢多個設備,則可以通過查詢X型設備的觀測值或最新的廠商或型號設備的觀測值來匯總查詢,請參閱: 搜索設備資源的參數

如果要查詢一組已知設備ID的最新n個觀測值,可以使用OR運算符,它只是一個冒號。

{{baseurl}}/Observation?device:Device=123,345,678&_sort=-_lastUpdated&_count=n

在hapi客戶端代碼中:

    Bundle results = myFhirCtx.newRestfulGenericClient("ttt")
        .search()
        .forResource(Observation.class)
        .where(Observation.DEVICE.hasAnyOfIds(new ArrayList<String>(Arrays.asList("123", "345", "678" ))))
        .sort().descending(Observation.DATE)
        .count(n)
        .returnBundle(Bundle.class)
        .execute();

結論

如果要對設備子集中的每個設備進行n次最新觀測,則可以:

  • 多次使用此示例的第一個查詢
  • 或者,如果您更喜歡一個REST調用,則可以將這些GET調用一起分批捆綁在一起進行批處理,例如以下示例: Batch Bundle search 這將返回一個批處理響應包,其中包含每個搜索的條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM