أمثلة بحث FHIR لواجهة برمجة تطبيقات Azure ل FHIR

فيما يلي بعض الأمثلة على استخدام عمليات البحث Fast Healthcare Interoperability Resources (FHIR®)، بما في ذلك معلمات البحث والمعاملات، والبحث في السلسلة والسلسلة العكسية، والبحث المركب، وعرض مجموعة الإدخال التالية لنتائج البحث، والبحث مع POST طلب. لمزيد من المعلومات حول البحث، راجع نظرة عامة على بحث FHIR.

معلمات نتائج البحث

_تشمل

_include يبحث عبر الموارد عن الموارد التي تتضمن المعلمة المحددة للمورد. على سبيل المثال، يمكنك البحث عبر MedicationRequest الموارد للعثور فقط على الموارد التي تتضمن معلومات حول الوصفات الطبية لمريض معين، وهي المعلمة referencepatient. في المثال أدناه، سيؤدي هذا إلى MedicationRequests سحب جميع المرضى وجميع المرضى المشار إليها من MedicationRequests:

 GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient

ملاحظة

تقتصر _include_revinclude على 100 عنصر.

_revinclude

_revinclude يسمح لك بالبحث في الاتجاه المعاكس ك _include. على سبيل المثال، يمكنك البحث عن المرضى ثم تضمين جميع اللقاءات التي تشير إلى المرضى:

GET [your-fhir-server]/Patient?_revinclude=Encounter:subject

_عناصر

_elements يضيق نتيجة البحث إلى مجموعة فرعية من الحقول لتقليل حجم الاستجابة عن طريق حذف البيانات غير الضرورية. تقبل المعلمة قائمة مفصولة بفواصل من العناصر الأساسية:

GET [your-fhir-server]/Patient?_elements=identifier,active

في هذا الطلب، ستحصل على مجموعة من المرضى، ولكن كل مورد سيتضمن فقط المعرف (المعرفات) والحالة النشطة للمريض. ستحتوي الموارد في هذه الاستجابة التي تم إرجاعها على meta.tag قيمة SUBSETTED للإشارة إلى أنها مجموعة غير مكتملة من النتائج.

أدوات تعديل البحث

:لا

:not يسمح لك بالعثور على الموارد التي لا تكون فيها السمة صحيحة. على سبيل المثال، يمكنك البحث عن المرضى الذين لا يكون الجنس من الإناث:

GET [your-fhir-server]/Patient?gender:not=female

كقيمة إرجاع، ستحصل على جميع إدخالات المرضى حيث لا يكون الجنس أنثى، بما في ذلك القيم الفارغة (الإدخالات المحددة دون نوع الجنس). يختلف هذا عن البحث عن المرضى حيث يكون الجنس ذكرا، لأن ذلك لن يتضمن الإدخالات دون جنس معين.

:مفقود

:missing ترجع كافة الموارد التي لا تحتوي على قيمة للعنصر المحدد عندما تكون trueالقيمة ، وترجع جميع الموارد التي تحتوي على العنصر المحدد عندما تكون falseالقيمة . بالنسبة لعناصر نوع البيانات البسيطة، :missing=true ستتطابق مع جميع الموارد حيث يكون العنصر موجودا مع الملحقات ولكن له قيمة فارغة. على سبيل المثال، إذا كنت تريد العثور على جميع Patient الموارد التي تفتقد إلى المعلومات في تاريخ الميلاد، يمكنك القيام بما يلي:

GET [your-fhir-server]/Patient?birthdate:missing=true

:الدقيق

:exact يستخدم للمعلمات string ، ويعيد النتائج التي تطابق المعلمة بدقة، كما هو الحال في الغلاف وتسلسل الأحرف.

GET [your-fhir-server]/Patient?name:exact=Jon

يقوم هذا الطلب بإرجاع Patient الموارد التي لها الاسم نفسه تماما مثل Jon. إذا كان المورد يحتوي على مرضى بأسماء مثل Jonathan أو joN، فسيتجاهل البحث المورد ويتخطىه لأنه لا يتطابق تماما مع القيمة المحددة.

:يحتوي

:contains يستخدم للمعلمات string والبحث عن الموارد ذات التطابقات الجزئية للقيمة المحددة في أي مكان في السلسلة داخل الحقل الذي يتم البحث فيه. contains غير حساس لحالة الأحرف ويسمح بتسلسل الأحرف. على سبيل المثال:

GET [your-fhir-server]/Patient?address:contains=Meadow

سيعيد لك هذا الطلب جميع Patient الموارد مع address الحقول التي تحتوي على قيم تحتوي على السلسلة "Meadow". وهذا يعني أنه يمكن أن يكون لديك عناوين تتضمن قيما مثل "Meadowers" أو "59 Meadow ST" التي يتم إرجاعها كنتائج بحث.

لتنفيذ سلسلة من عمليات البحث التي تغطي معلمات مرجعية متعددة، يمكنك "ربط" سلسلة المعلمات المرجعية عن طريق إلحاقها بطلب الخادم واحدا تلو الآخر باستخدام فترة .. على سبيل المثال، إذا كنت تريد عرض جميع DiagnosticReport الموارد مع subject مرجع إلى Patient مورد يتضمن :name

 GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah

سيعيد هذا الطلب جميع الموارد مع DiagnosticReport موضوع مريض يسمى "Sarah". تقوم الفترة . التي تلي الحقل Patient بإجراء البحث المتسلسل على المعلمة المرجعية للمعلمة subject .

استخدام شائع آخر للبحث العادي (وليس البحث بالتسلسل) هو العثور على جميع اللقاءات لمريض معين. Patientوغالبا ما يكون s واحد أو أكثر Encounterمع موضوع. للبحث عن جميع Encounter الموارد ل Patient مع المقدمة id:

GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

باستخدام البحث المتسلسل، يمكنك العثور على Encounter جميع الموارد التي تطابق جزءا معينا من Patient المعلومات، مثل birthdate:

GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20

وهذا لن يسمح فقط بالبحث عن Encounter الموارد لمريض واحد، ولكن عبر جميع المرضى الذين لديهم قيمة تاريخ الميلاد المحددة.

بالإضافة إلى ذلك، يمكن إجراء البحث المتسلسل أكثر من مرة في طلب واحد باستخدام الرمز &، والذي يسمح لك بالبحث عن شروط متعددة في طلب واحد. في مثل هذه الحالات، يبحث البحث المتسلسل "بشكل مستقل" عن كل معلمة، بدلا من البحث عن الشروط التي تفي بجميع الشروط فقط في وقت واحد:

GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA

سيؤدي ذلك إلى إرجاع جميع Patient الموارد التي تحتوي على generalPractitioner "Sarah" ك و التي تحتوي generalPractitioner على العنوان مع الولاية WA. وبعبارة أخرى، إذا كان المريض سارة من ولاية نيويورك وبيل من ولاية واشنطن على حد سواء المشار إليها على أنها المريض generalPractitioner، سيتم إرجاع.

بالنسبة للسيناريوهات التي يجب أن يكون AND فيها البحث عملية تغطي جميع الشروط كمجموعة، راجع مثال البحث المركب أدناه.

يتيح لك البحث في السلسلة البحث عن الموارد استنادا إلى خصائص الموارد التي تشير إليها. باستخدام البحث العكسي في السلسلة، يسمح لك بالقيام بذلك بالطريقة الأخرى. يمكنك البحث عن الموارد استنادا إلى خصائص الموارد التي تشير إليها، باستخدام _has المعلمة . على سبيل المثال، Observation يحتوي المورد على معلمة patient بحث تشير إلى مورد المريض. للعثور على جميع موارد المريض المشار إليها بواسطة Observation مع محدد code:

GET [base]/Patient?_has:Observation:patient:code=527

يقوم هذا الطلب بإرجاع موارد المريض المشار إليها بواسطة Observation مع التعليمات البرمجية 527.

بالإضافة إلى ذلك، يمكن أن يكون للبحث العكسي في السلسلة بنية متكررة. على سبيل المثال، إذا كنت ترغب في البحث عن جميع المرضى الذين لديهم Observation حيث تحتوي الملاحظة على حدث تدقيق من مستخدم janedoeمعين، يمكنك القيام بما يلي:

GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe

ملاحظة

في واجهة برمجة تطبيقات Azure ل FHIR وخادم FHIR مفتوح المصدر المدعوم من Azure Cosmos DB، يكون البحث المتسلسل والبحث العكسي المتسلسل تنفيذ MVP. لإنجاز البحث المتسلسل على Azure Cosmos DB، يستعرض التنفيذ تعبير البحث ويصدر الاستعلامات الفرعية لحل الموارد المتطابقة. يتم ذلك لكل مستوى من التعبير. إذا أرجع أي استعلام أكثر من 100 نتيجة، فسيتم طرح خطأ.

للبحث عن الموارد التي تفي بشروط متعددة في وقت واحد، استخدم البحث المركب الذي ينضم إلى سلسلة من قيم المعلمات المفردة برمز $. ستكون النتيجة التي تم إرجاعها هي تقاطع الموارد التي تطابق جميع الشروط المحددة بواسطة معلمات البحث المنضمة. تسمى معلمات البحث هذه معلمات البحث المركبة، وتحدد معلمة جديدة تجمع بين المعلمات المتعددة في بنية متداخلة. على سبيل المثال، إذا كنت تريد العثور على جميع DiagnosticReport الموارد التي تحتوي على Observation قيمة بوتاسيوم أقل من أو تساوي 9.2:

GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2

يحدد هذا الطلب المكون الذي يحتوي على رمز ، 2823-3والذي سيكون في هذه الحالة البوتاسيوم. $ بعد الرمز، فإنه يحدد نطاق القيمة للمكون باستخدام lt ل "أقل من أو يساوي" و 9.2 لنطاق قيمة البوتاسيوم.

البحث في مجموعة الإدخال التالية

الحد الأقصى لعدد الإدخالات التي يمكن إرجاعها لكل استعلام بحث واحد هو 1000. ومع ذلك، قد يكون لديك أكثر من 1000 إدخال يتطابق مع استعلام البحث، وقد ترغب في رؤية المجموعة التالية من الإدخالات بعد أول 1000 إدخال تم إرجاعها. في مثل هذه الحالة، يمكنك استخدام قيمة الرمز المميز url للاستمرار في searchset كما في Bundle النتيجة أدناه:

    "resourceType": "Bundle",
    "id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
    "meta": {
        "lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
    },
    "type": "searchset",
    "link": [
        {
            "relation": "next",
            "url": "[your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
        },
        {
            "relation": "self",
            "url": "[your-fhir-server]/Patient?_sort=_lastUpdated"
        }
    ],

ويمكنك إجراء طلب GET لعنون URL المقدم ضمن الحقل relation: next:

GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

سيؤدي ذلك إلى إرجاع المجموعة التالية من الإدخالات لنتيجة البحث. searchset هي المجموعة الكاملة من إدخالات نتائج البحث، ورمز url المتابعة المميز هو الارتباط الذي يوفره الخادم لاسترداد الإدخالات التي لا تظهر في المجموعة الأولى لأن التقييد على الحد الأقصى لعدد الإدخالات التي تم إرجاعها لاستعلام بحث.

البحث باستخدام POST

استخدمت GET جميع أمثلة البحث المذكورة أعلاه الطلبات. يمكنك أيضا القيام بعمليات البحث باستخدام POST الطلبات باستخدام _search:

POST [your-fhir-server]/Patient/_search?_id=45

سيعيد هذا الطلب جميع Patient الموارد بقيمة id 45. تماما كما هو الحال في طلبات GET، يحدد الخادم أي من مجموعة الموارد يلبي الشرط (الشروط)، ويرجع مورد حزمة في استجابة HTTP.

مثال آخر على البحث باستخدام POST حيث يتم إرسال معلمات الاستعلام كنص نموذج هو:

POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded

name=John

الخطوات التالية

في هذه المقالة، تعرفت على كيفية البحث باستخدام معلمات بحث مختلفة، ومؤشرات معدلة، وأدوات بحث FHIR. لمزيد من المعلومات حول بحث FHIR، راجع

FHIR® هي علامة تجارية مسجلة ل HL7 وتستخدم بإذن من HL7.