مشاركة عبر


أمثلة بحث 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.