← يتطلب: HL7 و FHIR الصحة متقدم ⏱ 5 ساعات الدورة 16

مقدمة في IRIS for Health

Introduction to IRIS for Health

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

1فهم IRIS for Health
2التعامل مع البيانات السريرية
3فهم SDA
4إنشاء خدمات صحية

01 IRIS for Health

IRIS for Health هو إصدار متخصص للقطاع الصحي يدعم HL7 و FHIR.

ClassMethod CreatePatient() {
  Set patient = ##class(HS.SDA3.Patient).%New()
  Set patient.Name = ##class(HS.SDA3.Name).%New()
  Set patient.Name.FamilyName = "محمد"
  Set patient.Name.GivenName = "أحمد"
  Set patient.Gender = "M"
  Set sc = ##class(HS.FHIR.Utils).SaveSDA(patient, "Patient")
}

02 SDA3 Data Model

SDA3 (Summary Document Architecture) هو نموذج البيانات الموحد في IRIS for Health.

// إنشاء سجل مريض مع SDA3
ClassMethod CreatePatientSDA() {
  // معلومات المريض
  Set patient = ##class(HS.SDA3.Patient).%New()
  Set patient.Name = ##class(HS.SDA3.Name).%New()
  Set patient.Name.FamilyName = "العلي"
  Set patient.Name.GivenName = "محمد"
  Set patient.Gender = "M"
  Set patient.BirthTime = "1985-03-20"
  
  // العنوان
  Set addr = ##class(HS.SDA3.Address).%New()
  Set addr.Street = "شارع الملك فهد"
  Set addr.City = "الرياض"
  Set addr.Country = "SA"
  Do patient.Addresses.Insert(addr)
  
  // التحويل إلى FHIR
  Set fhirBundle = ##class(HS.FHIR.Utils).SDAToFHIR(patient, "Patient")
  Return fhirBundle
}
03

إدارة السجلات السريرية

إدارة السجلات السريرية بكفاءة باستخدام IRIS for Health.

// إدارة السجلات السريرية
Class Hospital.Health.ClinicalRecords
{
    ClassMethod AddObservation(patientId As %String, code As %String, value As %Numeric, unit As %String)
    {
        Set obs = ##class(Hospital.Models.Observation).%New()
        Set obs.PatientId = patientId
        Set obs.Code = code
        Set obs.Value = value
        Set obs.Unit = unit
        Set obs.RecordedAt = $HOROLOG
        Do obs.%Save()
    }
    
    ClassMethod GetPatientSummary(patientId As %String)
    {
        Write "ملخص المريض: ", patientId, !
        
        // آخر الملاحظات
        &sql(SELECT TOP 5 Code, Value, Unit, RecordedAt INTO :code, :val, :unit, :date
             FROM Hospital.Models.Observation
             WHERE PatientId = :patientId
             ORDER BY RecordedAt DESC)
        While SQLCODE = 0 {
            Write code, ": ", val, " ", unit, " (", $ZDATE(date), ")", !
            &sql(FETCH)
        }
        
        // التشخيصات النشطة
        &sql(SELECT ICDCode, Description INTO :icd, :desc
             FROM Hospital.Models.Diagnosis
             WHERE PatientId = :patientId AND Status = 'نشطة')
        While SQLCODE = 0 {
            Write "تشخيص: ", icd, " - ", desc, !
            &sql(FETCH)
        }
    }
}

04 بوابة NPHIES

NPHIES هو المنصة الوطنية السعودية لتبادل المعلومات الصحية. يتطلب IRIS for Health للتكامل معه.

// الاتصال ببوابة NPHIES
ClassMethod ConnectToNPHIES() As %Status {
  Set config = ##class(HS.Util.Connection).%New()
  Set config.Endpoint = "https://nphies.sa/fhir"
  Set config.SecurityToken = ..GetOAuthToken()
  
  // إرسال مطالبة
  Set claim = ..CreateNPHIESClaim(patientId, services)
  Set sc = ##class(HS.FHIR.Client).SendResource(claim, config, .response)
  
  If $$$ISOK(sc) {
    Write "تم إرسال المطالبة بنجاح", !
    Write "رقم المرجع: ", response.id, !
  }
  Return sc
}

🔗 الربط مع ClaimLinc: يستخدم ClaimLinc من BrainSAIT هذا التكامل مباشرة.

05 السجل الصحي الإلكتروني (EHR)

بناء سجل صحي אלקטרוני متكامل باستخدام IRIS for Health.

// بناء EHR متكامل
ClassMethod BuildEHR(patientId) As %DynamicObject {
  Set ehr = {}
  Set ehr.patient = ##class(HS.FHIR.Utils).GetResource("Patient", patientId)
  Set ehr.observations = ..GetPatientObservations(patientId)
  Set ehr.medications = ..GetPatientMedications(patientId)
  Set ehr.encounters = ..GetPatientEncounters(patientId)
  Set ehr.conditions = ..GetPatientConditions(patientId)
  
  // حساب ملخص صحي
  Set ehr.summary = {
    "totalVisits": (ehr.encounters.%Size()),
    "activeMedications": (ehr.medications.%Size()),
    "lastLabDate": (..GetLastLabDate(patientId)),
    "riskScore": (..CalculateRiskScore(patientId))
  }
  
  Return ehr
}

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

1. ما هو IRIS for Health؟

إصدار متخصص يدعم المعايير الطبية

ما هو SDA3؟

SDA3 هو Summary Document Architecture - نموذج موحد للبيانات السريرية

ما هو الفرق بين IRIS و IRIS for Health؟
💡 الشرح

IRIS for Health يضيف دعم المعايير الصحية (HL7, FHIR, SDA3) فوق IRIS العادي

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

  • IRIS for Health مصمم خصيصاً للقطاع الصحي
  • SDA3 هي بنية البيانات الصحية الموحدة
  • Health Connect يوفر محرك تكامل للأنظمة الصحية
  • خادم المصطلحات يدير ICD-10 وSNOMED CT
  • IRIS for Health يتضمن FHIR Server مدمجاً