FHIR arama örnekleri
Aşağıda çeşitli arama parametreleri, değiştiriciler, zincirlenmiş ve ters zincirlenmiş aramalar, bileşik aramalar POST
, arama istekleri ve daha fazlasını içeren Hızlı Sağlık Hizmeti Birlikte Çalışabilirlik Kaynakları (FHIR®) arama API'leri çağrılarına örnekler verilmiştir. FHIR arama kavramlarına genel bir giriş için bkz . FHIR Aramasına Genel Bakış.
Arama sonucu parametreleri
_include
_include
kaynak örneklerini aramanıza ve sonuçlara hedef kaynak örnekleri tarafından başvuruda bulunan diğer kaynakları eklemenize olanak tanır. Örneğin, kaynakları sorgulamak MedicationRequest
ve aramayı belirli bir hastanın reçeteleriyle sınırlamak için kullanabilirsiniz_include
. FHIR hizmeti daha sonra kaynakları ve başvuruda Patient
bulunan kaynağı döndürürMedicationRequest
. Aşağıdaki örnekte istek, veritabanındaki tüm MedicationRequest
kaynak örneklerini ve örnekler tarafından MedicationRequest
başvuruda bulunan tüm hastaları çeker.
GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient
Not
Azure Health Veri Hizmetleri'ndeki FHIR hizmeti, _include
_revinclude
aramaları ve en fazla 100 öğe döndürecek şekilde sınırlar.
_revinclude
_revinclude
kaynak örneklerini aramanıza ve sonuçlara hedef kaynak örneklerine başvuran diğer kaynakları eklemenize olanak tanır. Örneğin, hastaları arayabilir ve ardından geriye doğru hastalara başvuran tüm karşılaşmaları dahil edebilirsiniz.
GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject
_elements
_elements
arama sonuçlarındaki bilgileri bir kaynak türü için tanımlanan öğelerin bir alt kümesine daraltır. _elements
parametresi, temel öğelerin virgülle ayrılmış bir listesini kabul eder.
GET {{FHIR_URL}}/Patient?_elements=identifier,active
Önceki istek bir hasta paketi döndürür. Her giriş yalnızca tanımlayıcıları ve hastanın etkin durumunu içerir. Yanıttaki girdiler, kaynak için tanımlanan tüm öğelerin dahil edilmediğini belirtmek için değerini meta.tag
SUBSETTED
içerir.
Arama değiştiricileri
:not
:not
belirli bir değere sahip olmayan bir öğeye sahip kaynakları bulmanıza olanak tanır. Örneğin, kadın olmayan hastaları arayabilirsiniz.
GET {{FHIR_URL}}/Patient?gender:not=female
Buna karşılık, cinsiyet değeri belirtilmemiş female
hastalar da dahil olmak üzere öğe değeri olmayan tüm Patient
kaynakları gender
alırsınız. Bu, belirtilen cinsiyeti olmayan hastaları yoksayacağı için Patient
cinsiyet değerine sahip male
kaynakları aramaktan farklıdır.
:missing
:missing
, olduğunda :missing=true
belirtilen öğe için değeri olmayan tüm kaynakları döndürür. Ayrıca, :missing
olduğunda :missing=false
belirtilen öğesini içeren tüm kaynakları döndürür. Basit veri türü öğeleri için, :missing=true
bir öğenin bulunduğu ancak boş bir değere sahip olduğu tüm kaynaklarda eşleşir. Örneğin, üzerinde birthdate
eksik olan tüm Patient
kaynakları bulmak istiyorsanız aşağıdaki çağrıyı yapabilirsiniz.
GET {{FHIR_URL}}/Patient?birthdate:missing=true
:exact
:exact
veri türlerine sahip string
öğeleri aramak için kullanılır ve parametre değeri, öğe değerinin büyük/küçük harf ve tam karakter dizisiyle tam olarak eşleşiyorsa pozitif döndürür.
GET {{FHIR_URL}}/Patient?name:exact=Jon
Bu istek, veya family
adına Jon
sahip given
kaynakları döndürürPatient
. veya JON
gibi Jonathan
adları olan hastalar varsa, adları belirtilen değerle tam olarak eşleşmediğinden arama bu kaynakları yoksayar.
:contains
:contains
, tür öğelerini sorgulamak için string
kullanılır ve alanın herhangi bir yerinde belirtilen değerle eşleşmelere izin verir. contains
büyük/küçük harfe duyarlı değildir ve diğer karakterlerle birleştirilmiş eşleşen dizeleri tanır. Örneğin:
GET {{FHIR_URL}}/Patient?address:contains=Meadow
Bu istek, "Meadow" dizesini (büyük/küçük harfe duyarsız) içeren öğe alanları olan address
tüm Patient
kaynakları döndürür. Bu, pozitif eşleşmeler döndüren "Meadows Lane", "Pinemeadow Place" veya "Meadowlark St" gibi değerlere sahip adreslere sahip olabileceğiniz anlamına gelir.
Zincirleme arama
Başvuruda bulunılan bir kaynağın içindeki öğeleri kapsayan arama işlemleri gerçekleştirmek için, bir dizi parametreyi ile .
birlikte "zincirleyebilirsiniz". Örneğin, tarafından name
belirtilen bir subject
hastaya başvuru içeren tüm DiagnosticReport
kaynakları görüntülemek istiyorsanız aşağıdaki sorguyu kullanın.
GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah
Bu istek, "Sarah" adlı bir hasta konusu olan tüm DiagnosticReport
kaynakları döndürür. .
Zincirlenmiş aramayı başvuruda bulunan kaynağın name
içindeki öğesine işaret ederPatient
.
FHIR aramasının bir diğer yaygın kullanımı, belirli bir hastanın tüm karşılaşmalarını bulmaktır. Normal (zincirsiz) bir arama yapmak için, belirli id
bir kaynakla başvuruda Patient
bulunan kaynakları aramak için Encounter
aşağıdakileri kullanın.
GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Zincirleme aramayı kullanarak, ayrıntıları bir arama parametresiyle eşleşen hastalara başvuran tüm Encounter
kaynakları bulabilirsiniz. Aşağıdaki örnekte, tarafından birthdate
daraltılmış hastalara başvuran karşılaşmaların nasıl arandığı gösterilmektedir.
GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20
Bu, belirtilen birthdate
değere sahip hastalara başvuran tüm Encounter
örnekleri döndürür.
Buna ek olarak, işlecini &
kullanarak birden çok zincirlenmiş arama başlatabilirsiniz ve bu da tek bir istekte birden çok başvuruda arama yapılmasına olanak tanır. ile ilgili &
durumlarda zincirlenmiş arama her öğe değerini "bağımsız olarak" tarar.
GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Bu, "Sarah" başvurusu olan tüm Patient
kaynakları, ayrıca Washington eyaletinde adresi olan bir generalPractitioner
başvuru olarak generalPractitioner
döndürür. Başka bir deyişle, bir hastanın New York eyaletinden Sarah adlı ve Washington eyaletinden Bill adlı başka generalPractitioner
bir generalPractitioner
hasta varsa, bu arama yaparken her ikisi de pozitif eşleşme koşullarını karşılar.
Aramanın eşleştirilmiş öğe değerlerini kesinlikle denetleyen bir mantıksal AND koşulu gerektirdiği senaryolar için aşağıdaki bileşik arama örneklerine bakın.
Zincirlenmiş aramayı ters çevir
FHIR'de ters zincirlenmiş arama kullanmak, diğer kaynaklar tarafından başvuruda bulunan hedef kaynak örneklerini aramanızı sağlar. Başka bir deyişle, kaynaklara başvuran kaynakların özelliklerine göre arama yapabilirsiniz. Bu, parametresiyle _has
gerçekleştirilir. Örneğin, kaynağın Observation
bir kaynağa başvuruyu denetlediği bir Patient
arama parametresi patient
vardır. belirli code
bir Observation
ile başvuruda bulunan tüm Patient
kaynakları bulmak için aşağıdaki kodu kullanın.
GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527
Bu istek, koduyla 527
kaynaklar tarafından Observation
başvuruda bulunan kaynakları döndürürPatient
.
Buna ek olarak, ters zincirlenmiş arama özyinelemeli bir yapıya sahip olabilir. Örneğin, gözlemin adlı janedoe
belirli bir Observation
uygulamacı tarafından başvurulduğu bir yerde başvuruda AuditEvent
bulunan tüm hastaları aramak istiyorsanız şunu kullanın:
GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Bileşik arama
Mantıksal olarak bağlı çiftler olarak gruplandırılmış öğeleri içeren kaynakları aramak için FHIR, tek parametre değerlerini işleçle $
birleştiren bileşik aramayı tanımlar ve bağlı bir parametre çifti oluşturur. Bileşik aramada, öğe değerlerinin kesişimi eşleştirilmiş arama parametrelerinde ayarlanan tüm koşulları karşıladığında pozitif eşleşme oluşur. Aşağıdaki örnek, değerinden 9.2
küçük bir potasyum değeri içeren tüm DiagnosticReport
kaynaklar için sorgular:
GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Bu durumda eşlenen öğeler öğesi (olarak başvuruldu bir Observation
kaynaktan) ve value
ile code
bağlantılı öğe olacaktırcode
.result
işleci ile kodun takipi $
value
koşulu ("küçüktür") (potasyum mmol/L değeri için) 9.2
olarak lt
ayarlar.
Bileşik arama parametreleri, birden çok bileşen kodu değeri miktarlarını mantıksal veya ile filtrelemek için de kullanılabilir. Örneğin, diastolik kan basıncı 90'dan büyük VEYA sistolik kan basıncı 140'tan büyük olan gözlemleri sorgulamak için:
GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140
İki koşul arasında mantıksal OR işleci olarak nasıl ,
çalıştığını unutmayın.
Sonraki giriş kümesini görüntüleme
Bir arama sorgusundan aynı anda döndürülebilecek en fazla kaynak sayısı 1000'dir. Ancak, arama sorgusuyla eşleşen 1.000'den fazla kaynak örneğiniz olabilir ve ilk 1.000 girdiden sonraki sonuç kümesini almak isteyebilirsiniz. Bu durumda, aramadan döndürülen paketteki searchset
continuation (başka bir ifadeyle"next"
) belirteç url
değerini aşağıdaki gibi kullanabilirsiniz.
"resourceType": "Bundle",
"id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
"meta": {
"lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
},
"type": "searchset",
"link": [
{
"relation": "next",
"url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
},
{
"relation": "self",
"url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated"
}
],
Sağlanan URL için bir GET
istekte bulunabilirsiniz:
GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Bu, arama sonuçlarınız için sonraki girdi kümesini döndürür. Paket searchset
, arama sonucu girdilerinin tam kümesidir ve devamlılık belirteci url
, FHIR hizmeti tarafından ilk alt kümeye sığmayan girişleri almak için sağlanan bağlantıdır (bir sayfa için döndürülen en fazla girdi sayısı kısıtlaması nedeniyle).
Kullanarak arama POST
Burada bahsedilen tüm arama örnekleri istekleri kullanır GET
. Ancak parametresini kullanarak POST
FHIR arama API'leri çağrıları _search
da yapabilirsiniz.
POST {{FHIR_URL}}/Patient/_search?_id=45
Bu istek, verilen id
değere Patient
sahip kaynak örneğini döndürür. GET
İsteklerde olduğu gibi sunucu da koşulları karşılayan kaynak örneklerini belirler ve HTTP yanıtında bir paket döndürür.
ile POST
aramanın bir diğer özelliği de sorgu parametrelerini form gövdesi olarak göndermenize olanak tanıyor olmasıdır.
POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Sonraki adımlar
Bu makalede, arama parametrelerini, değiştiricileri ve diğer yöntemleri kullanarak FHIR'de arama hakkında bilgi edindiyseniz. FHIR araması hakkında daha fazla bilgi için bkz.