← يتطلب: IRIS for Health الصحة متقدم ⏱ 5 ساعات الدورة 18

السجل الموحد للمريض

Unified Patient Record

🎯 أهداف التعلم

1فهم UPR
2توحيد البيانات
3إدارة الهوية
4دمج المصادر

01 什么是 UPR

UPR يجمع بيانات المريض من مصادر مختلفة في مكان واحد.

ClassMethod CreateUPR(patientId) {
  Set upr = ##class(HS.SDA3.Patient).%New()
  Set emrData = ..GetFromEMR(patientId)
  Set labData = ..GetFromLab(patientId)
  Do upr.Merge(emrData)
  Do upr.Merge(labData)
  Set sc = upr.%Save()
}

02 تطابق المرضى (Patient Matching)

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

// خوارزمية تطابق بسيطة
ClassMethod MatchPatient(name, dob, gender) {
  Set score = 0
  Set candidates = []
  
  &sql(SELECT ID, Name, BirthDate, Gender INTO :id, :n, :bd, :g FROM Patient
       WHERE BirthDate = :dob)
  
  While SQLCODE = 0 {
    Set matchScore = 0
    // تطابق الاسم
    If ..SimilarName(name, n) Set matchScore = matchScore + 40
    // تطابق تاريخ الميلاد
    If bd = dob Set matchScore = matchScore + 30
    // تطابق الجنس
    If g = gender Set matchScore = matchScore + 30
    
    If matchScore >= 70 {
      Do candidates.%Push({"id": (id), "score": (matchScore)})
    }
    &sql(SELECT ID, Name, BirthDate, Gender INTO :id, :n, :bd, :g FROM Patient
         WHERE BirthDate = :dob AND ID > :id)
  }
  
  Return candidates
}
03

تقرير السجل الموحد

إنشاء تقارير شاملة من السجل الموحد للمريض.

// تقرير السجل الموحد
Class Hospital.UPR.ReportGenerator
{
    ClassMethod GeneratePatientReport(mpiId As %String)
    {
        Set patient = ##class(Hospital.UPR.PatientRegistry).FindByMPIID(mpiId)
        If '$ISOBJECT(patient) {
            Write "المريض غير موجود", !
            Quit
        }
        
        Write "═══════════════════════════════════", !
        Write "تقرير السجل الموحد للمريض", !
        Write "═══════════════════════════════════", !
        Write "معرف MPI: ", patient.MPIID, !
        Write "الاسم: ", patient.Demographics.Name, !
        
        // MRNs من جميع المؤسسات
        Write !, "معرفات MRN:", !
        For i = 1:1:patient.MRNList.Count() {
            Write "  - ", patient.MRNList.GetAt(i), !
        }
        
        // التشخيصات من جميع المصادر
        Write !, "التشخيصات:", !
        &sql(SELECT ICDCode, Description, Source INTO :code, :desc, :source
             FROM Hospital.UPR.UnifiedDiagnosis
             WHERE MPIID = :mpiId)
        While SQLCODE = 0 {
            Write "  ", code, " - ", desc, " (", source, ")", !
            &sql(FETCH)
        }
    }
}

📝 اختبار التحقق

1. ما هو الهدف من UPR؟

UPR يجمع بيانات المريض من مصادر متعددة

ما هو تطابق المرضى (Patient Matching)؟

تطابق المرضى يحدد ما إذا كان سجلان ينتميان لنفس المريض باستخدام خوارزميات مختلفة

لماذا نحتاج UPR؟
💡 الشرح

UPR يجمع بيانات المريض من مصادر متعددة (مختبر، صيدلية، إلخ) في سجل واحد

💡 النقاط الرئيسية

  • UPR يجمع البيانات الصحية من مصادر متعددة
  • MPI يربط سجلات المرضى بمعرف موحد
  • Patient Matching يستخدم خوارزميات مقارنة متعددة
  • إدارة الهوية تمنع السجلات المكررة
  • عمليات الدمج تربط السجلات المكررة