FHIR

شرح ملفات FHIR والإضافات: كيف يحدد دليل التنفيذ موردًا، وكيفية التحقق منه

ملف FHIR هو StructureDefinition يحدد نطاق مورد أساسي: العناصر المطلوبة، يجب دعمها، الرموز الثابتة، التقطيع، الربط، الثوابت. الإضافة تضيف ما تركه الأساس. كيف تُنشر الملفات، ماذا يعني meta.profile، كيف يتحقق المدققون منها، مع مثال توضيحي لكل منها.

بواسطة نُشر في يُقرأ في 6 دقائق

إجابة مختصرة: موارد FHIR الأساسية مرنة عمدًا: كل شيء تقريبًا اختياري ومعظم الرموز هي مجرد أمثلة، بحيث يناسب معيار واحد كل البلدان. الملف الشخصي (profile) هو تعريف بنية (StructureDefinition) يشدد المورد لاستخدام واحد: في هذا السياق، يجب أن يحتوي المريض على معرف من هذا النوع، ويجب أن يكون رمز الملاحظة (Observation.code) رمز LOINC من هذه القائمة، ويجب دعم هذا العنصر، ولا يجوز ظهور ذلك العنصر. الامتداد (extension) يضيف عنصرًا يفتقر إليه المورد الأساسي، ويتم تحديده بواسطة عنوان URL وتعريفه بواسطة تعريف بنيته الخاص. أدلة التنفيذ (implementation guides) (مثل US Core، IPS، الأدلة الوطنية) هي مجموعات من الملفات الشخصية، والامتدادات، ومجموعات القيم، والأمثلة. يذكر المورد الملفات الشخصية التي يدعي الالتزام بها في meta.profile، ويقوم المدقق بالتحقق منها.

ما يمكن للملف الشخصي تغييره

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

القيد ما يفعله مثال
عدد العناصر (Cardinality) جعل العناصر الاختيارية مطلوبة، أو منعها Patient.identifier 1..*; Patient.photo 0..0
يجب الدعم (Must support) يجب أن يكون المستلمون قادرين على تخزين وعرض العنصر إذا تم إرساله يحدد US Core birthDate كـ "يجب الدعم"
قيمة ثابتة أو نمط (Fixed value or pattern) قفل عنصر على قيمة واحدة Observation.category ثابت على vital-signs
الربط (Binding) توجيه عنصر إلى مجموعة قيم بقوة معينة Observation.code مرتبط بقائمة العلامات الحيوية، مطلوب
التقطيع (Slicing) تقسيم قائمة إلى أجزاء مسماة بقواعدها الخاصة ضغط الدم: المكون مقطع إلى انقباضي وانبساطي
تقييد النوع (Type restriction) الحد من خيار value[x] مقيد بـ valueQuantity
غير متغير (Invariant) قاعدة FHIRPath يجب أن تتحقق "يجب أن يكون effective[x] موجودًا" أو "value أو dataAbsentReason"
هدف المرجع (Reference target) الحد مما يمكن أن يشير إليه المرجع subject فقط للمريض، وفقط للمرضى الذين يتوافقون مع هذا الملف الشخصي

يمكن للملف الشخصي فقط التضييق. لا يمكنه إضافة عناصر (هذا ما تستخدم له الامتدادات)، أو إعادة تسمية أي شيء، أو تخفيف الأساس.

قوة الربط

يحدد FHIR أربع نقاط ربط. required: يجب أن يأتي الرمز من مجموعة القيم. extensible: استخدم مجموعة القيم إذا كان المفهوم مناسبًا؛ وإلا يُسمح برمز آخر. preferred: موصى به، ولكنه غير مفروض. example: توضيحي فقط، وهذا ما تمتلكه معظم الموارد الأساسية. يُعد سوء قراءة extensible على أنه required مصدرًا شائعًا لأخطاء التحقق الخاطئة.

مقتطف ملف شخصي قابل للقراءة

ملف FHIR الشخصي هو StructureDefinition تسرد تفاضليته فقط القيود التي تختلف عن المورد الأساسي، بينما تسرد لقطته كل عنصر. المقتطف القابل للقراءة أدناه يقيد Observation إلى ضغط الدم المنزلي: يتم تثبيت الرمز على LOINC 85354-9 ويتم تقسيم المكون إلى جزء واحد بالضبط للضغط الانقباضي وجزء واحد للضغط الانبساطي.

الفرق (differential) للملف الشخصي يسرد فقط ما تغير عن الأساس؛ اللقطة (snapshot) تسرد كل شيء. هذا الفرق يقول أن ملاحظة ضغط الدم يجب أن تحمل رمز LOINC 85354-9 ومكونين بالضبط:

{
  "resourceType": "StructureDefinition",
  "url": "https://example.org/fhir/StructureDefinition/bp-home",
  "name": "HomeBloodPressure",
  "status": "active",
  "kind": "resource",
  "abstract": false,
  "type": "Observation",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Observation",
  "derivation": "constraint",
  "differential": {"element": [
    {"id": "Observation.code", "path": "Observation.code",
     "patternCodeableConcept": {"coding": [{"system": "http://loinc.org", "code": "85354-9"}]}},
    {"id": "Observation.component", "path": "Observation.component", "min": 2, "max": "2",
     "slicing": {"discriminator": [{"type": "pattern", "path": "code"}], "rules": "closed"}},
    {"id": "Observation.component:systolic", "path": "Observation.component", "sliceName": "systolic", "min": 1, "max": "1"},
    {"id": "Observation.component:systolic.code", "path": "Observation.component.code",
     "patternCodeableConcept": {"coding": [{"system": "http://loinc.org", "code": "8480-6"}]}},
    {"id": "Observation.component:diastolic", "path": "Observation.component", "sliceName": "diastolic", "min": 1, "max": "1"},
    {"id": "Observation.component:diastolic.code", "path": "Observation.component.code",
     "patternCodeableConcept": {"coding": [{"system": "http://loinc.org", "code": "8462-4"}]}}
  ]}
}

نادرًا ما تُكتب الملفات الشخصية يدويًا؛ يستخدم المؤلفون اختصار FHIR (FHIR Shorthand) (FSH) مع SUSHI، أو أدوات مثل Forge و Simplifier، وينشرون باستخدام ناشر IG الخاص بـ HL7. يتم توزيع الأدلة كـ حزم (packages) (hl7.fhir.us.core#6.1.0, hl7.fhir.uv.ips#1.1.0) تقوم المدققات والخوادم بتحميلها.

الامتدادات

الامتداد هو عنصر مفتاح-قيمة موضوع في extension (أو modifierExtension عندما يغير معنى المورد ويجب عدم تجاهله). url الخاص به هو عنوان URL القياسي لتعريف بنيته؛ قيمته هي value[x] واحد من نوع معين، أو امتدادات متداخلة. مكان الميلاد هو امتداد معرف بواسطة HL7 على المريض:

{
  "resourceType": "Patient",
  "id": "example",
  "extension": [{
    "url": "http://hl7.org/fhir/StructureDefinition/patient-birthPlace",
    "valueAddress": {"city": "Lyon", "country": "FR"}
  }],
  "name": [{"family": "Doe", "given": ["Jane"]}]
}

قواعد الممارسة الجيدة: ابحث عن امتداد موجود (سجل HL7 والأدلة الوطنية) قبل تعريف واحد؛ أعطه عنوان URL تحت نطاق تتحكم فيه؛ عرفه في تعريف بنية حتى يتمكن الآخرون من التحقق منه؛ لا تستخدم امتدادًا لشيء يغطيه عنصر أساسي بالفعل.

meta.profile والتحقق

meta.profile هي قائمة عناوين URL القياسية التي يدعي مورد FHIR الامتثال لها، والادعاء ليس إثباتًا. يتحقق المدقق من المورد مقابل المواصفات الأساسية وضد كل ملف شخصي مدعى، أو ضد ملف شخصي تسميه. يعمل مدقق HL7 المرجعي محليًا مع الحزم، وتكشف خوادم FHIR عن عملية $validate تقبل معلمة ملف شخصي.

meta.profile يسرد عناوين URL القياسية التي يدعي المورد الامتثال لها. الادعاء ليس إثباتًا: يقوم المدقق بالتحقق من المورد مقابل المواصفات الأساسية وضد كل ملف شخصي مدعى (أو مقابل ملف شخصي تطلب منه استخدامه). المدقق المرجعي لـ HL7 (validator_cli.jar) يعمل محليًا ويحمل الحزم؛ تقدم الخوادم POST /Observation/$validate?profile=…؛ يقوم ناشر IG بالتحقق من جميع الأمثلة في دليل. قد يتوافق المورد مع عدة ملفات شخصية في وقت واحد (ملف شخصي وطني للمريض وملف IPS للمريض) طالما أنها لا تتعارض.

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

في Anpheros

Anpheros Platform هو خادم FHIR R4 يستخدم LOINC للملاحظات، و ATC للأدوية، و SNOMED CT عند الاقتضاء، ويقدم مدققًا مجانيًا يتحقق من بنية المورد مقابل FHIR R4. عندما ترسل العيادة موارد مع تعيين meta.profile لملف شخصي وطني أو IPS، يتم الاحتفاظ بالادعاء حتى يتمكن نظام لاحق من التحقق منه.

يوجد المدقق المجاني على موقع المطورين. بالنسبة للأدلة نفسها، انظر شرح أدلة تنفيذ FHIR.

صفحات ذات صلة

مصادر

الأسئلة الشائعة

هل يمكن للملف الشخصي إضافة عنصر جديد إلى مورد؟

لا. الملفات الشخصية تقيد فقط. تذهب البيانات الجديدة في امتداد، والذي يمكن للملف الشخصي بعد ذلك أن يطلبه أو يمنعه مثل أي عنصر آخر.

ماذا يتطلب "يجب الدعم" فعليًا؟

يحدد دليل التنفيذ ذلك؛ عادةً ما يعني أن المرسل يملأ العنصر عندما يمتلك البيانات وأن المستلم يقوم بتخزينه ويمكنه عرضه. لا يجعل العنصر إلزاميًا.

إذا لم يكن للمورد meta.profile، فهل هو غير صالح؟

لا. meta.profile هو ادعاء، وليس شرطًا. قد يتطلب الخادم أو الدليل ذلك؛ المواصفات الأساسية لا تتطلب ذلك. يمكن طلب المدققات للتحقق مقابل ملف شخصي لا يعلنه المورد.

كيف أعرف أي ملف شخصي يجب استخدامه في بلدي؟

ينشر كل مجتمع FHIR وطني دليلًا أساسيًا (مثل US Core، UK Core، nl-core، Basisprofile الألماني، وما إلى ذلك)؛ تشرح صفحة أدلة التنفيذ كيفية العثور عليها. تستخدم الملخصات عبر الحدود IPS.

Anpheros Platform

جرّبه مجانًا في بيئة الاختبار

أول طلب FHIR خلال 5 دقائق. واجهة برمجة تطبيقات HL7 FHIR R4 مع موافقة المريض مدمجة: جربها في بيئة الاختبار، ثم اربط تطبيقك الخاص أو نظام عيادتك.

مجاني · 30 مريضًا اصطناعيًا · دون بطاقة

هذا الدليل هو للمعلومات فقط ولا يغني عن الاستشارة الطبية. لاتخاذ قرارات بشأن صحتك، تحدث مع طبيبك. في حالة الطوارئ، اتصل برقم الطوارئ المحلي (112 في أوروبا).
بقلم
فريق Anpheros

تبني Anpheros سجلًا طبيًا يتحكم فيه المريض ويمكن مشاركته مع أي عيادة، على منصة HL7 FHIR R4، مقرها في الاتحاد الأوروبي. تساعدك هذه الأدلة على فهم وتنظيم صحتك؛ ولا تغني عن استشارة طبيبك.

عن Anpheros →