أمثلة بحث FHIR لواجهة برمجة تطبيقات Azure ل FHIR
فيما يلي بعض الأمثلة على استخدام عمليات البحث Fast Healthcare Interoperability Resources (FHIR®)، بما في ذلك معلمات البحث والمعاملات، والبحث في السلسلة والسلسلة العكسية، والبحث المركب، وعرض مجموعة الإدخال التالية لنتائج البحث، والبحث مع POST
طلب. لمزيد من المعلومات حول البحث، راجع نظرة عامة على بحث FHIR.
معلمات نتائج البحث
_تشمل
_include
يبحث عبر الموارد عن الموارد التي تتضمن المعلمة المحددة للمورد. على سبيل المثال، يمكنك البحث عبر MedicationRequest
الموارد للعثور فقط على الموارد التي تتضمن معلومات حول الوصفات الطبية لمريض معين، وهي المعلمة reference
patient
. في المثال أدناه، سيؤدي هذا إلى 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.