簡體   English   中英

在DeviceObservationReport上按排序搜索參數

[英]Search parameters with sort on DeviceObservationReport

給定一個資源(例如DeviceObservationReport),許多字段的基數為0..many。 在某些情況下,它們包含對其他資源的引用,這些資源也可能具有0..many的基數。 我在決定如何支持參考資源上的“鏈式”查詢時遇到了很大的困難,這可能是“深入”兩到三個步驟(需要一個更好的術語)。

例如,在一個DeviceObservationReport中,可能有多個觀察資源引用。 客戶完全有可能希望執行一個查詢,該查詢請求帶有特定代碼的觀察的所有實例,這些實例的時間戳(appliesDate)晚於特定時間。 命名的“搜索參數”觀察將似乎是顯而易見的起點,並且觀察的路徑被指定為virtualDevice.channel.metric.observation。 假設virtualDevice,channel和metric字段的基數為0 .. *,那么將通過一個“簡單”查詢來檢索所有DeviceObservationReport實例,這些實例包含使用代碼TESTCODE進行的觀察,並於2014年10月10日晚14:00觀察到:

../data/DeviceObservationReport?virtualDevice[0].channel[0].metric[0].observation.name=TESTCODE&virtualDevice[0].channel[0].metric[0].observation.date>2014-10-10 %2014:00

其次,如果客戶要求按日期對結果集進行排序,那么在查詢中將如何表達該結果,因為從我為實現此目的的各種嘗試而得出的結論,此時對查詢的支持變得相當復雜,並且到目前為止,我還沒有想出令人滿意的解決方案。

首先,參數的路徑是資源內的路徑,並在定義的名稱之間鏈接鏈接。 因此,您的查詢將如下所示:

../data/DeviceObservationReport?observation.name=TESTCODE&observation.date=>2014-10-10%2014:00

例如,搜索參數是資源內的別名。 但是,此搜索的問題在於參數是在根而不是葉上進行AND運算的-這意味着這會找到所有具有TESTCODE觀測值且日期> DATE觀測值的設備觀測報告,這完全不同到您可能想要的:所有設備觀察報告的觀察結果都帶有TESTCODE,且日期> DATE。 這將在FHIR的下一個主要版本中解決。

使用鏈接查詢很難進行排序。 我最終提取了要排序的字段,但實際上並未對其進行排序-我將原始匹配項插入保存表中,然后在訪問輔助表時按排序字段進行排序。 這樣做的主要理由是使分頁功能對資源的持續更改具有魯棒性。

暫無
暫無

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

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