أمثلة بحث FHIR
فيما يلي أمثلة على استدعاءات API للبحث في Fast Healthcare Interoperability Resources (FHIR®) التي تتضمن معلمات بحث مختلفة، ومؤشرات، وعمليات بحث متسلسلة وعكسية، وعمليات بحث مركبة، POST
وطلبات بحث، والمزيد. للحصول على مقدمة عامة حول مفاهيم بحث FHIR، راجع نظرة عامة على بحث FHIR.
معلمات نتائج البحث
_include
_include
يتيح لك البحث عن مثيلات الموارد، وتضمين الموارد الأخرى المشار إليها بواسطة مثيلات المورد الهدف في النتائج. على سبيل المثال، يمكنك استخدام _include
للاستعلام عن MedicationRequest
الموارد وقصر البحث على وصفات طبية لمريض معين. ثم تقوم خدمة FHIR بإعادة MedicationRequest
الموارد والمورد المشار Patient
إليه. في المثال التالي، يسحب الطلب جميع MedicationRequest
مثيلات الموارد في قاعدة البيانات وجميع المرضى الذين تشير MedicationRequest
إليها المثيلات.
GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient
إشعار
تحد خدمة FHIR في Azure Health Data Services من عمليات البحث مع _include
وإرجاع _revinclude
100 عنصر كحد أقصى.
_revinclude
_revinclude
يسمح لك بالبحث عن مثيلات الموارد، وتضمين الموارد الأخرى التي تشير إلى مثيلات الموارد الهدف في النتائج. على سبيل المثال، يمكنك البحث عن المرضى ثم عكس تضمين جميع اللقاءات التي تشير إلى المرضى.
GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject
_elements
_elements
يضيق المعلومات الموجودة في نتائج البحث إلى مجموعة فرعية من العناصر المعرفة لنوع مورد. _elements
تقبل المعلمة قائمة مفصولة بفواصل من العناصر الأساسية.
GET {{FHIR_URL}}/Patient?_elements=identifier,active
يقوم الطلب السابق بإرجاع مجموعة من المرضى. يتضمن كل إدخال فقط المعرفات والحالة النشطة للمريض. تحتوي الإدخالات في الاستجابة على meta.tag
قيمة SUBSETTED
للإشارة إلى أنه لا يتم تضمين كافة العناصر المعرفة للمورد.
معدلات البحث
:not
:not
يسمح لك بالعثور على موارد مع عنصر لا يحتوي على قيمة معينة. على سبيل المثال، يمكنك البحث عن المرضى غير الإناث.
GET {{FHIR_URL}}/Patient?gender:not=female
في المقابل، سوف تحصل على جميع Patient
الموارد التي لا female
تكون قيمة عنصرها gender
، بما في ذلك أي مرضى ليس معهم قيمة جنس محددة. وهذا يختلف عن البحث عن Patient
الموارد ذات القيمة الجنسانية male
لأن ذلك سيتجاهل المرضى الذين لا يعانون من جنس محدد.
:missing
:missing
إرجاع كافة الموارد التي لا تحتوي على قيمة للعنصر المحدد عند :missing=true
. بالإضافة إلى ذلك، :missing
ترجع كافة الموارد التي تحتوي على العنصر المحدد عند :missing=false
. بالنسبة لعناصر نوع البيانات البسيطة، :missing=true
يتطابق مع جميع الموارد حيث يوجد عنصر ولكن له قيمة فارغة. على سبيل المثال، إذا كنت تريد العثور على كافة Patient
الموارد التي تفتقد إلى معلومات على birthdate
، يمكنك إجراء الاستدعاء التالي.
GET {{FHIR_URL}}/Patient?birthdate:missing=true
:exact
:exact
يستخدم للبحث عن عناصر ذات string
أنواع بيانات وإرجاع موجبة إذا كانت قيمة المعلمة تتطابق بدقة مع الحالة وتسلسل الأحرف الكامل لقيمة العنصر.
GET {{FHIR_URL}}/Patient?name:exact=Jon
يقوم هذا الطلب بإرجاع Patient
الموارد التي تحتوي على given
أو family
اسم Jon
. إذا كان هناك مرضى بأسماء مثل Jonathan
أو JON
، فإن البحث سيتجاهل هذه الموارد لأن أسمائهم لا تتطابق مع القيمة المحددة بالضبط.
:contains
:contains
يستخدم للاستعلام عن string
عناصر النوع ويسمح بالمطابقات مع القيمة المحددة في أي مكان داخل الحقل. contains
ليس حساسا لحالة الأحرف، ويتعرف على السلاسل المطابقة المتسلسلة مع أحرف أخرى. على سبيل المثال:
GET {{FHIR_URL}}/Patient?address:contains=Meadow
سيعيد هذا الطلب كافة Patient
الموارد مع address
حقول العناصر التي تحتوي على السلسلة "Meadow" (غير حساسة لحالة الأحرف). وهذا يعني أنه يمكن أن يكون لديك عناوين بقيم مثل "Meadows Lane" أو "Pinemeadow Place" أو "Meadowlark St" التي ترجع تطابقات إيجابية.
البحث المتسلسل
لتنفيذ عمليات البحث التي تغطي العناصر الموجودة داخل مورد مرجعي، يمكنك "ربط" سلسلة من المعلمات مع .
. على سبيل المثال، إذا كنت تريد عرض كافة DiagnosticReport
الموارد مع subject
مرجع إلى مريض محدد بواسطة name
، فاستخدم الاستعلام التالي.
GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah
يقوم هذا الطلب بإرجاع جميع DiagnosticReport
الموارد مع موضوع مريض يسمى "Sarah". يشير .
البحث المتسلسل إلى name
العنصر داخل المورد المشار Patient
إليه.
استخدام شائع آخر للبحث FHIR هو العثور على جميع اللقاءات لمريض معين. لإجراء بحث منتظم (غير متسلسل) عن Encounter
الموارد التي تشير إلى Patient
مع معين id
، استخدم ما يلي.
GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
باستخدام البحث المتسلسل، يمكنك العثور على جميع Encounter
الموارد التي تشير إلى المرضى الذين تتطابق تفاصيلهم مع معلمة بحث. يوضح المثال التالي كيفية البحث عن لقاءات تشير إلى المرضى الذين تم تضييق نطاقهم بواسطة birthdate
.
GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20
سيؤدي هذا إلى إرجاع جميع Encounter
المثيلات التي تشير إلى المرضى الذين يعانون من القيمة المحددة birthdate
.
بالإضافة إلى ذلك، يمكنك بدء عمليات بحث متعددة ذات تسلسل باستخدام &
عامل التشغيل ، والذي يسمح بالبحث مقابل مراجع متعددة في طلب واحد. في الحالات التي تحتوي على &
، يفحص البحث المتسلسل "بشكل مستقل" كل قيمة عنصر.
GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
يؤدي ذلك إلى إرجاع كافة Patient
الموارد التي تحتوي على إشارة إلى "Sarah" كمرجع generalPractitioner
بالإضافة إلى generalPractitioner
عنوان في ولاية واشنطن. وبعبارة أخرى، إذا كان لدى المريض اسم generalPractitioner
سارة من ولاية نيويورك وآخر generalPractitioner
اسمه بيل من ولاية واشنطن، فسيلبي كلاهما شروط مطابقة إيجابية عند إجراء هذا البحث.
بالنسبة للسيناريوهات التي يتطلب فيها البحث شرطا منطقيا AND يتحقق بدقة من قيم العناصر المقترنة، راجع أمثلة البحث المركب التالية.
البحث العكسي بالتسلسل
يتيح لك استخدام البحث العكسي المتسلسل في FHIR البحث عن مثيلات الموارد الهدف المشار إليها بواسطة موارد أخرى. بمعنى آخر، يمكنك البحث عن الموارد استنادا إلى خصائص الموارد التي تشير إليها. يتم إنجاز ذلك باستخدام المعلمة _has
. على سبيل المثال، يحتوي المورد على Observation
معلمة patient
بحث تتحقق من وجود مرجع إلى Patient
مورد. للبحث عن كافة Patient
الموارد المشار إليها بواسطة Observation
مع معين code
، استخدم التعليمات البرمجية التالية.
GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527
يقوم هذا الطلب بإرجاع Patient
الموارد المشار إليها بواسطة Observation
الموارد باستخدام التعليمات البرمجية 527
.
بالإضافة إلى ذلك، يمكن أن يكون للبحث المتسلسلة العكسي بنية متكررة. على سبيل المثال، إذا كنت ترغب في البحث عن جميع المرضى المشار إليها من قبل Observation
حيث تتم الإشارة إلى الملاحظة من قبل AuditEvent
ممارس معين يسمى janedoe
، فاستخدم:
GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
بحث مركب
للبحث عن الموارد التي تحتوي على عناصر مجمعة معا كأزواج متصلة منطقيا، يعرف FHIR البحث المركب، الذي يربط قيم المعلمات المفردة مع $
عامل التشغيل - ما يشكل زوجا متصلا من المعلمات. في بحث مركب، تحدث مطابقة إيجابية عندما يفي تقاطع قيم العنصر بجميع الشروط المعينة في معلمات البحث المقترنة. يستعلم المثال التالي عن جميع DiagnosticReport
الموارد التي تحتوي على قيمة بوتاسيوم أقل من 9.2
:
GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
ستكون العناصر المقترنة code
في هذه الحالة هي العنصر (من Observation
مورد يشار إليه باسم result
) والعنصر value
المتصل ب code
. اتباع التعليمات البرمجية $
مع عامل التشغيل يعين value
الشرط على أنه lt
(ل "أقل من") 9.2
(لقيمة mmol/L للبوتاسيوم).
يمكن أيضا استخدام معلمات البحث المركب لتصفية كميات قيمة التعليمات البرمجية للمكونات المتعددة باستخدام OR منطقي. على سبيل المثال، للاستعلام عن الملاحظات مع ضغط الدم الانقباضي أكبر من 90 أو ضغط الدم الانقباضي أكبر من 140:
GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140
لاحظ كيف ,
يعمل كعامل تشغيل OR منطقي بين الشرطين.
عرض مجموعة الإدخالات التالية
الحد الأقصى لعدد الموارد التي يمكن إرجاعها مرة واحدة من استعلام البحث هو 1000. ومع ذلك، قد يكون لديك أكثر من 1000 مثيل مورد يتطابق مع استعلام البحث، وتريد استرداد المجموعة التالية من النتائج بعد أول 1000 إدخال. في هذه الحالة، يمكنك استخدام قيمة المتابعة (أي "next"
) الرمز المميز url
في المجموعة التي searchset
تم إرجاعها من البحث كما يلي.
"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"
}
],
يمكنك تقديم GET
طلب لعنون URL المتوفر:
GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
يؤدي ذلك إلى إرجاع المجموعة التالية من الإدخالات لنتائج البحث. searchset
الحزمة هي المجموعة الكاملة لإدخالات نتائج البحث، والرمز المميز url
للمتابعة هو الارتباط الذي توفره خدمة FHIR لاسترداد الإدخالات التي لا تتناسب مع المجموعة الفرعية الأولى (بسبب التقييد على الحد الأقصى لعدد الإدخالات التي تم إرجاعها لصفحة واحدة).
البحث باستخدام POST
تستخدم GET
جميع أمثلة البحث المذكورة هنا الطلبات. ومع ذلك، يمكنك أيضا إجراء استدعاءات واجهة برمجة تطبيقات بحث FHIR باستخدام POST
مع المعلمة _search
كما يلي.
POST {{FHIR_URL}}/Patient/_search?_id=45
يقوم هذا الطلب بإرجاع Patient
مثيل المورد بالقيمة المحددة id
. كما هو الحال مع GET
الطلبات، يحدد الخادم مثيلات الموارد التي تفي بالشروط ويعيد حزمة في استجابة HTTP.
ميزة أخرى للبحث باستخدام POST
هي أنه يتيح لك إرسال معلمات الاستعلام كنص نموذج.
POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
الخطوات التالية
في هذه المقالة، تعرفت على البحث في FHIR باستخدام معلمات البحث والمعاملات وأساليب أخرى. لمزيد من المعلومات حول بحث FHIR، راجع
إشعار
FHIR® هي علامة تجارية مسجلة ل HL7 وتستخدم بإذن من HL7.