AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

كيفية تطبيع البيانات الطبية

برنامج تعليمي: تحويل البيانات الطبية من مصادر متعددة إلى شكل واحد قابل للمقارنة — بحث LOINC، وحدات UCUM، تواريخ ISO، نطاقات مرجعية، لا تكرارات عند إعادة المحاولة، والتحقق من الصحة مقابل الملف الأوروبي للمختبر.

يعني تطبيع البيانات الطبية تحويل القيم التي تصل بأشكال متعددة إلى شكل واحد قابل للمقارنة: نفس الرمز لنفس الاختبار، نفس نظام الوحدات، تواريخ بتنسيق واحد، كل قيمة مع نطاقها المرجعي ومصدرها، وعدم وجود تكرارات. يوضح هذا البرنامج التعليمي كيفية القيام بذلك قبل وصول البيانات إلى سجل HL7 FHIR R4: البحث عن رموز LOINC و ATC، واستخدام وحدات UCUM، ورفض التواريخ الغامضة، والاحتفاظ بالنطاقات، وتجنب التكرارات عند إعادة المحاولة، والتحقق من النتيجة مقابل ملف تعريف المختبر الأوروبي. كل استجابة معروضة تأتي من Anpheros API.

لماذا هذا مهم

يمكن أن تصلك نتيجة HbA1c نفسها بصيغ مختلفة مثل "HbA1c 6,4 %" أو "Hemoglobina glicozilata: 6.4" أو "Glycated haemoglobin 46 mmol/mol" أو رمز مختبري لا يفهمه سوى مختبر واحد. حتى تصبح هذه كلها رمزًا واحدًا بوحدة واحدة:

يجب أن تتم عملية التطبيع عند نقطة دخول البيانات إلى السجل، مرة واحدة، وليس في كل تطبيق يقرأها لاحقًا.

ما هي القيمة المُطَبَّعة (Normalized Value)

جزء الشكل المُطَبَّع مثال
ما تم قياسه رمز من نظام قياسي LOINC 4548-4 (HbA1c)، RxNorm 6809 (metformin)، ICD-10 E11 (type 2 diabetes)
القيمة رقم، أو نص فقط عندما لا تكون النتيجة رقمية 6.4
الوحدة UCUM %، mg/dL، mm[Hg]، kg
متى تاريخ ووقت بتنسيق ISO 8601، مع المنطقة الزمنية عندما يكون الوقت مهمًا 2026-10-01T07:30:00Z
النطاق الطبيعي الحد الأدنى والأقصى، بنفس الوحدة 4.0–5.6
المصدر من أنتجها ومن أي نظام import من labx
الهوية شيء يجعل التكرار قابلاً للتعرف عليه مفتاح idempotency أو معرف المصدر

تم إدراج نظام الترميز الذي يتوافق مع كل نوع مورد في أنظمة ترميز FHIR.

الخطوة 1: البحث عن الرمز

ابحث في مصطلحات المنصة بالاسم الإنجليزي أو الروماني، أو بالاختصار:

curl "https://platform.anpheros.com/v1/terminology/loinc?q=hba1c" -H "Authorization: Bearer $KEY"
curl "https://platform.anpheros.com/v1/terminology/loinc?q=hemoglobina%20glicozilata" -H "Authorization: Bearer $KEY"

كلاهما يعيد نفس المفهوم:

{"data": [{"system": "http://loinc.org", "code": "4548-4", "display": "Hemoglobin A1c/Hemoglobin.total in Blood",
           "display_ro": "Hemoglobină glicozilată (HbA1c)", "category": "laboratory", "unit": "%"}], "total": 1}

بالنسبة للأدوية، Anpheros Search يبحث عن المادة بالاسم أو العلامة التجارية ويعطي رمز مكون RxNorm الخاص بها وأرقام منتجات EMA:

curl "https://platform.anpheros.com/v1/search?q=metformin&type=treatment" -H "Authorization: Bearer $KEY"

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

الخطوة 2: الكتابة باستخدام الرموز والوحدات والنطاقات

curl -X POST "https://platform.anpheros.com/v1/patients/$PID/observations" -H "Authorization: Bearer $KEY" \
     -H "Content-Type: application/json" -H "Idempotency-Key: lab-77-hba1c" -d '{
  "code": "4548-4", "category": "laboratory",
  "value": 6.4, "unit": "%", "effective_at": "2026-10-01T07:30:00Z",
  "reference_range": {"low": 4.0, "high": 5.6},
  "author_type": "import"
}'
{"id": "3296315c-…", "code": "4548-4", "system": "http://loinc.org", "display": "Hemoglobin A1c/Hemoglobin.total in Blood",
 "category": "laboratory", "effective_at": "2026-10-01T07:30:00Z", "value": 6.4, "unit": "%",
 "reference_range": {"low": 4.0, "high": 5.6}, "status": "final", "fhir": "Observation/3296315c-…"}

عندما ترسل الرمز فقط، تقوم المنصة بملء اسم LOINC القياسي، على واجهة برمجة تطبيقات REST وعلى واجهة برمجة تطبيقات FHIR (/fhir/R4) على حد سواء، بحيث تقرأ كل تطبيق نفس الشيء display. يتم الاحتفاظ بالـ display الذي ترسله بنفسك كما هو.

احتفظ بالصياغة الأصلية أيضًا. بالنسبة لتقرير معملي، يحمل الـ code.text في FHIR Observation اسم المختبر ("Hemoglobina glicozilata (HbA1c)") بجوار ترميز LOINC. لا يزال المريض يتعرف على تقريره الورقي، ولا يُفقد شيء إذا تم التشكيك في الربط في أي وقت.

الخطوة 3: الوحدات

استخدم رموز UCUM: mg/dL، mmol/L، %، mm[Hg]، kg، cm، /min، Cel. قاعدتان تمنعان معظم الأخطاء:

لا يقوم Anpheros بتحويل الوحدات لك؛ بل يقوم بتخزين الوحدة التي ترسلها.

الخطوة 4: التواريخ

قم بتحويل التواريخ إلى تنسيق ISO 8601 قبل الكتابة، باستخدام التنسيق المعروف للمصدر. 01.10.2026 هو 1 أكتوبر في رومانيا والعديد من الدول الأوروبية، ولكن 10/01/2026 هو 1 أكتوبر فقط في الولايات المتحدة. ترفض واجهة برمجة التطبيقات (API) أي شيء ليس بتنسيق ISO، بدلاً من التخمين:

{"error": {"type": "invalid", "message": "Input should be a valid datetime or date, invalid character in year (at effective_at)", "field": "effective_at"}}

موصل المختبر هو الاستثناء: فهو يقبل DD.MM.YYYY و DD/MM/YYYY لأنه يعرف أنه يقرأ تقريرًا أوروبيًا.

بالنسبة للقياسات التي يكون فيها وقت اليوم مهمًا (ضغط الدم، الجلوكوز، جرعات الأدوية)، أرسل الوقت مع منطقته الزمنية. قراءة في الساعة 23:30 في بوخارست تكون في اليوم السابق بتوقيت UTC، ويتوقع المريض أن تكون في اليوم الذي أخذها فيه.

الخطوة 5: لا تكرارات

تنشأ التكرارات من إعادة المحاولة، ومن إرسال نفس التقرير مرتين، ومن وصول نفس القيمة عبر مسارين.

الخطوة 6: التحقق مقابل ملف تعريف

بالنسبة لنتائج المختبر، اسأل المنصة عن كيفية قياس مورد ما مقابل ملف تعريف تقرير مختبر HL7 Europe قبل الاعتماد عليه:

curl -X POST "https://platform.anpheros.com/fhir/R4/Observation/\$validate?profile=eu-lab" -H "Authorization: Bearer $KEY" \
     -H "Content-Type: application/fhir+json" -d '{
  "resourceType": "Observation", "status": "final",
  "category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "laboratory"}]}],
  "code": {"text": "HbA1c"}, "subject": {"reference": "Patient/'$PID'"},
  "valueQuantity": {"value": 6.4, "unit": "%"}
}'

هذه النتيجة غير المعيارية تحصل على قائمة دقيقة:

{"resourceType": "OperationOutcome", "issue": [
  {"severity": "error", "code": "invalid", "diagnostics": "Observation.code must carry a LOINC coding.", "expression": ["Observation.code"]},
  {"severity": "error", "code": "required", "diagnostics": "Observation.effective[x] is required.", "expression": ["Observation.effective"]},
  {"severity": "warning", "code": "business-rule", "diagnostics": "valueQuantity should carry a UCUM system and code.", "expression": ["Observation.valueQuantity"]},
  {"severity": "warning", "code": "informational", "diagnostics": "No referenceRange: interpretation will need the laboratory's ranges.", "expression": ["Observation.referenceRange"]},
  {"severity": "information", "code": "informational", "diagnostics": "No performer (laboratory) recorded.", "expression": ["Observation.performer"]},
  {"severity": "information", "code": "informational", "diagnostics": "No issued time (when the laboratory released the result).", "expression": ["Observation.issued"]}]}

تتوافق كل مشكلة مع إحدى الخطوات المذكورة أعلاه. قم بتشغيل $validate في اختبارات التكامل الخاصة بك، مع عينات حقيقية من كل مصدر.

الخطوة 7: الحفاظ على المصدر

يغير التطبيع كيفية كتابة القيمة، وليس مصدرها أبدًا. أرسل author_type (device، import، practitioner، patient) و X-Anpheros-Source-System مع كل عملية كتابة. هذا ما يسمح للطبيب أو المدقق أو نموذج الذكاء الاصطناعي بالتمييز بين نتيجة مختبر وقيمة تم إدخالها في المنزل. انظر شرح مصدر البيانات الطبية.

قائمة التحقق

أسئلة متكررة

ما هو تطبيع البيانات الطبية؟

تحويل البيانات الصحية من مصادر مختلفة إلى شكل قياسي واحد: رموز مشتركة (LOINC للاختبارات والقياسات، ICD-10 للتشخيصات، ATC للأدوية)، وحدات UCUM، تواريخ ISO، نطاقات مرجعية، ومصدر مسجل، بحيث يمكن مقارنة القيم من أنظمة مختلفة ودمجها وتبادلها.

هل يجب عليّ تحويل جميع القيم إلى وحدة واحدة؟

قم بتخزين الوحدة التي قاس بها المصدر، طالما أنها وحدة UCUM صالحة تتطابق مع الرمز، وقم بالتحويل عند العرض أو التحليل. هذا يحافظ على تتبع كل قيمة مخزنة إلى تقريرها الأصلي.

هل يمكن أن يكون التطبيع تلقائيًا بالكامل؟

في الغالب. يمكن تعيين الرموز في المصدر، والأسماء المعروفة، والوحدات ذات التنسيق الجيد تلقائيًا. الأسماء الغامضة والرموز المحلية غير المعروفة تحتاج إلى قرار بشري مرة واحدة لكل مصدر، وبعد ذلك يكون التعيين تلقائيًا.

مواضيع ذات صلة

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy