Jun 26, 2017

HL7 Message ဆိုတာဘာလဲ။

Ko Sagaing
(HL7 Wiki မှ ပုံဖြစ်ပါသည်။)

နည်းပညာတွေကို သက်ဆိုင်ရာနယ်ပယ်ထဲမှာ ထည့်သွင်းအသုံးပြုကြတဲ့အခါ အဲ့ဒီနယ်ပယ်အတွက် ဖန်တီးထားတဲ့ စနစ်တွေဟာ တစ်ခုထက်မကရှိနိုင်ပါတယ်။  အဲ့ဒီစနစ်တွေဟာ မတူညီတဲ့ အဖွဲ့အစည်းတွေ၊ နည်းပညာတွေနှင့် ထုတ်လုပ်ထားလေ့ရှိကြတယ်၊ နောက်ပြီး စနစ်တွေဟာ သီးသန့်တည်ရှိနေလို့မရသလို၊ စနစ်တစ်ခုနှင့်တစ်ခု အပြန်အလှန်ဆက်သွယ်ပြီးလည်း လုပ်ဆောင်နေကြရတယ်။  ယင်းကဲ့သို့စနစ်တွေ အပြန်အလှန်ဆက်သွယ်ပြီး လုပ်ဆောင်နိုင်တာက Standard လို့ခေါ်တဲ့ စံသတ်မှတ်ချက်တွေကြောင့်ဖြစ်တယ်။  အဲ့ဒီ စံသတ်မှတ်ချက်တွေထဲမှာ တစ်ခုအပါအဝင်ဖြစ်တဲ့  HL7 Message စံသတ်မှတ်ချက်ဟာ ကျမ္မာရေးနှင့်သက်ဆိုင်တဲ့ ဆေးပညာနယ်ပယ်အတွက် အသုံးပြုတဲ့စံသတ်မှတ်ချက်ဖြစ်တယ်။  HL7 ဆိုတာ Health Level 7 ဖြစ်ပါတယ်။  ကျမ္မာရေးစောင့်ရှောက်မှုစနစ်တွေမှာ လူနာတစ်ယောက်နှင့်သက်ဆိုင်တဲ့ အချက်အလက်တွေကို စနစ်တစ်ခုနှင့်တစ်ခု အပြန်အလှန်ပေးပို့နိုင်ဖို့ ဖန်တီးထားတဲ့ Standard ကို HL7 လို့ခေါ်ပါတယ်။

HL7 လို့ဘာလို့ခေါ်တာလဲ။
နည်းပညာနယ်ပယ်က လူတိုင်းနီးပါး OSI Model (Open System Interconnection Model) အကြောင်းကို သိပြီးသားဖြစ်ပါလိမ့်မယ်။  OSI Model မှာ Layer ၇ခု ရှိပါတယ်၊ အဲ့ဒီ Layer တွေထဲမှာ နောက်ဆုံး Layer ဖြစ်တဲ့ Layer - 7 ဟာ Application Layer ဖြစ်ပါတယ်။  HL7 Standard ကို Application Layer မှာပဲအသုံးပြုပါတယ်။  အဲ့ဒါကြောင့် Health Level 7 လို့ ခေါ်တာဖြစ်ပါတယ်။  HL7 စံသတ်မှတ်ချက်တွေကို Health Level Seven International လို့အမည်ရတဲ့ NGO အဖွဲ့ကနေ၊ ANSI (American National Standards Institute) နှင့် ISO (International Standards Organization) တို့ရဲ့ အတည်ပြုချက်တွေနှင့်၊ ထုတ်ပြန်ထားတာဖြစ်ပါတယ်။  အောက်ပါပုံကတော့ Layer ၇ခုနှင့်ဖွဲ့စည်းထားတဲ့ OSI Model ပုံဖြစ်ပါတယ်။

(Source : Internet)

HL7 Message Standard Version
HL7 Standard တွေထဲမှာ HL7 Message နှင့်သက်ဆိုင်တဲ့ Standard ကို Version 2.x နှင့် Version 3 ဆိုပြီး (၂)မျိုး တွေ့နိုင်ပါတယ်။  Version 2.x နှင့် Version 3 မှာ နည်းပညာအားဖြင့် အဓိကခြားနားချက်ကတော့ Version 3 မှာ Object Oriented Design Methodology နှင့် XML အသုံးပြုလာခြင်းပဲဖြစ်ပါတယ်။  ဒီခြားနားမှုအပြင် Version 3 ဟာ Version 2.x တွေအတွက် Backward Compatible လို့ခေါ်တဲ့ နောက်ကြောင်းပြန်သဟဇာတဖြစ်မှုတွေ မပါဝင်ကြောင့် Version အသစ်တစ်ခုကဲ့သို့ဖြစ်ခဲ့ပါတယ်။  Version 2.x ကို နည်းပညာအသုံးပြုတဲ့ သာမာန်ဆေးရုံ၊ ဆေးခန်းတွေမှာရှိတဲ့ စနစ်တွေမှာ တွေ့နိုင်ပြီး၊ Version 3 ကိုတော့ အစိုးရဆေးရုံကြီးတွေ၊ နိုင်ငံတကာနှင့် ချိတ်ဆက်လုပ်ကိုင်နေကြတဲ့ ဆေးရုံကြီးတွေက နည်းပညာအသုံးပြုတဲ့ စနစ်တွေမှာ တွေ့နိုင်ပါတယ်။  ဒီအချက်တွေကြောင့် Version 2.x ဟာ လက်ရှိအချိန်အထိ စနစ်တော်တော်များများမှာ အသုံးပြုနေတဲ့ Standard တစ်ခုအနေနှင့် တည်ရှိနေပါတယ်။

HL7 Message ပုံစံနှင့်ဖွဲ့စည်းပုံ

HL7 Version 2.x Message Standard 

Version 2.x Message တစ်ခုကို Segment လို့ခေါ်တဲ့ အပိုင်းတွေ နှင့်ဖွဲ့စည်းထားပါတယ်။  Segment တစ်ခုဟာ တကယ်တော့ လိုင်းတစ်လိုင်း (သို့) စာကြောင်းတစ်ကြောင်းဖြစ်ပါတယ်။  Message တစ်ခုဟာ ဘယ်လို Message အမျိုးအစားဖြစ်တယ်ဆိုတာကို ပထမဆုံး Segment တစ်ခုဖြစ်တဲ့ MSH Segment ကိုကြည့်ခြင်းအားဖြင့် သိနိုင်ပါတယ်။  ဥပမာအနေဖြင့် အောက်ပါ Message တစ်ခုကိုကြည့်လိုက်ရင်...

MSH|^~\&|SOURCE|383018129|PRIORITY HEALTH|382715520|2007100914484648||ORU^R01|0129938170710091448|P|2.3| PID|1|1034157|012993817||LASTNAME^FIRSTNAME||19520101|M|||1234 MAIN^^DEARBORN HEIGHT^MI^48127|||||||| 
PD1|1|||1234567890^DOCLAST^DOCFIRST^M^^^^^NPI| 
OBR|1|||80061^LIPID PROFILE^CPT-4||20070911|||||||||| 
OBX|1|NM|13457-7^LDL (CALCULATED)^LOINC|49.000|MG/DL| 0.000 - 100.000|N|||F| OBX|2|NM|2093-3^CHOLESTEROL^LOINC|138.000|MG/DL|100.000 - 200.000|N|||F| OBX|3|NM|2086-7^HDL^LOINC|24.000|MG/DL|45.000 - 150.000|L|||F| 
OBX|4|NM|2571-8^TRIGLYCERIDES^LOINC|324.000|MG/DL| 0.000 - 150.000|H|||F|
 PriorityHealth မှ နမူနာ ဖြစ်ပါတယ်။

အနီရောင်ခြယ်ထားတာတွေက Segment တွေရဲ့ အစဖြစ်ပါတယ်။  Segment တစ်ခုဟာ Field တွေနှင့် ဖွဲ့စည်းထားပါတယ်။  Field တစ်ခုနှင့် တစ်ခုကို Vertial Bar ( | ) နှင့်ကန့်သတ်ထားပါတယ်။  MSH ဆိုတာ Message Header ဖြစ်ပြီး၊ MSH Segment ရဲ့ ကိုးခုမြောက် Field ဟာ Message Type (အမျိုးအစား) ဖြစ်ပါတယ်။  အဲ့ဒီနေရာမှာ ORU^R01 ဆိုတာတွေ့ရပါတယ်။  Message Type ကတော့ Obervation Result (ဆေးစစ်မှုအဖြေ) ဖြစ်ပါတယ်။  ဒီ Message ထဲမှာ ရောဂါလက္ခဏာ၊ ခန္ဓာကိုယ်က အရေးကြီးအစိတ်အပိုင်းတွေ (ဥပမာ၊​အသည်း၊ နှလုံး၊ အဆုတ်) စသည်တို့ရဲ့ အခြေအနေ၊ စသည်ဖြင့်ပါဝင်ပါတယ်။  Message ထဲမှာ PID ဆိုတာ Patient Identification ဖြစ်ပါတယ်။  လူနာနှင့်ပတ်သက်တဲ့ အချက်အလက်တွေ ပါဝင်ပါတယ်။  PD1 ဆိုတဲ့ Segment က Patient Additional Demographic ဖြစ်ပါတယ်။  လူနာနှင့်ပတ်သက်တဲ့ အခြားအချက်အလက်တွေဖြစ်ပါတယ်။  PD1 က လိုအပ်မှ ဆရာဝန်တွေထည့်သွင်း ဖေါ်ပြတဲ့ Segment တစ်ခုဖြစ်ပါတယ်။  OBR ဆိုတဲ့ Segment က Observation Request ဖြစ်ပါတယ်။  ဆေးစစ်မှုကို လုပ်ဆောင်တဲ့နေ့နှင့် အခြားလိုအပ်တဲ့ အချက်အလက်တွေဖြစ်ပါတယ်။  OBX Segment ကတော့ Observation Result ဖြစ်ပါတယ်။  ဆရာဝန်ရဲ့ လူနာကိုစစ်ဆေးမှုပေါ်မူတည်ပြီး OBX Segment တွေကို တစ်ခုထက်မက တွေ့နိုင်ပါတယ်။  အခြား Message Type တွေရဲ့ ဖွဲ့စည်းပုံကလည်း ဒီ Message ကဲ့သို့ဖြစ်ပါတယ်။  Segment တွေကို လေ့လာချင်ရင် ဒီနေရာမှာ လေ့လာနိုင်ပါတယ်။  Microsoft ရဲ့ HL7 Message Structure မှာလည်း Message Type တွေ၊ Segment တွေကို လေ့လာနိုင်ပါတယ်။

HL7 Version 3 Message Standard

Version 3 Message တစ်ခုကို XML နည်းပညာနှင့် ဖွဲ့စည်းတည်ဆောက်ထားပါတယ်။  နည်းပညာသမားတွေအနေနှင့်ကတော့ XML (Extensible Markup Language) ဆိုတာကို ရင်းနှီးပြီးသားဖြစ်ပါတယ်။  Version 3 Message တစ်ခုကို အောက်ပါအတိုင်း XML tag တွေနှင့် ဖွဲ့စည်းထားပါတယ်။

<POLB_IN224200 ITSVersion="XML_1.0" xmlns="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <id root="2.16.840.1.113883.19.1122.7" extension="CNTRL-3456"/> <creationTime value="200202150930-0400"/> <!-- The version of the datatypes/RIM/vocabulary used is that of May 2006 --> <versionCode code="2006-05"/> <!-- interaction id= Observation Event Complete, w/o Receiver Responsibilities --> <interactionId root="2.16.840.1.113883.1.6" extension="POLB_IN224200"/> <processingCode code="P"/> <processingModeCode nullFlavor="OTH"/> <acceptAckCode code="ER"/> <receiver typeCode="RCV"> <device classCode="DEV" determinerCode="INSTANCE"> <id extension="GHH LAB" root="2.16.840.1.113883.19.1122.1"/> <asLocatedEntity classCode="LOCE"> <location classCode="PLC" determinerCode="INSTANCE"> <id root="2.16.840.1.113883.19.1122.2" extension="ELAB-3"/> </location> </asLocatedEntity> </device> </receiver> <sender typeCode="SND"> <device classCode="DEV" determinerCode="INSTANCE"> <id root="2.16.840.1.113883.19.1122.1" extension="GHH OE"/> <asLocatedEntity classCode="LOCE"> <location classCode="PLC" determinerCode="INSTANCE"> <id root="2.16.840.1.113883.19.1122.2" extension="BLDG24"/> </location> </asLocatedEntity> </device> </sender> <controlActProcess classCode="CACT" moodCode="EVN"> <subject typeCode="SUBJ" contextConductionInd="false"> <encounterEvent classCode="ENC" moodCode="EVN"> <id root="1.56.3.4.7.5" extension="122345" assigningAuthorityName="Maple Hospital Emergency"/> <code code="EMER" codeSystem="2.16.840.1.113883.5.4"/> <statusCode code="active"/> <subject contextControlCode="OP"> <patient classCode="PAT"> <id root="1.56.3.4.7.9" extension="55321" assigningAuthorityName="Maple Hospital Patients"/> <patientPerson classCode="PSN" determinerCode="INSTANCE"> <name> <given>Rob</given> <given>P</given> <family>Young</family> </name> <administrativeGenderCode code="M" codeSystem="2.16.840.1.113883.5.1"/> <birthTime value="19800309"/> </patientPerson> </patient> </subject> </encounterEvent> </subject> </controlActProcess> </POLB_IN224200>
Wiki နှင့် Oracle မှ နမူနာများ ဖြစ်ပါတယ်။

POLB_IN224200 က Root tag ဖြစ်ပါတယ်။  Message ထဲမှာတွေ့ရတဲ့ နံပါတ်တွေဟာ Global သတ်မှတ်ထားတဲ့ Unique ID တွေဖြစ်ပါတယ်။  Message တွေမှာ Root tag အပါအဝင်၊ creationTime၊ processingCode၊ ဘယ်ကနေပို့ပြီး (sender)၊ ဘယ်ကလက်ခံတယ် (receiver) စသည် tag တွေနှင့်ဖွဲ့စည်းထားတဲ့အပိုင်းကို Transmission Wrapper လို့ခေါ်ပါတယ်။  အဲ့ဒီထဲမှာမှ Query Control Wrapper ဆိုတဲ့ tag လာပါတယ်။  အဲ့ဒီ tag ထဲမှာမှ Medical အချက်အလက်တွေကို သက်ဆိုင်ရာ tag အစုလိုက် ခွဲခြားပြီးဖွဲ့စည်းထားပါတယ်။  နမူနာ Message ထဲမှာ controlActProcess tag က Query Control Wrapper တစ်ခုဖြစ်ပါတယ်။  အဲ့ဒီ ထဲမှာမှ ဆေးရုံနှင့်ပတ်သက်တဲ့ အချက်အလက်၊ လူနာနှင့်ပတ်သက်တဲ့ အချက်လက်နှင့် အခြားဆေးပညာပိုင်းဆိုင်ရာ အချက်အလက်တွေ ပါဝင်ပါတယ်။  V3 Message တွေကို HTTP နှင့် SOAP Web Services တွေကို အသုံးပြုပြီး တစ်နေရာမှ၊ တစ်နေရာသို့ ပေးပို့ပါတယ်။  Web Services အကြောင်းကို လေ့လာချင်ရင် ဒီနေရာမှာ ကျွန်တော်ရေးသားထားပါတယ်။  အောက်ပါပုံကတော့ HL7 V3 မှာပါဝင်တဲ့ Layer တွေနှင့် Model ပုံဖြစ်ပါတယ်။


HL7 Message နှင့်ပတ်သက်တဲ့ အခြားလင့်ခ်များ
HL7Wiki
Oracle HL7 V3 Sample Project
HL7 Overview PDF
HL7 Implementation Guide
HL7 Message V2 and V3
Version of the HL7 Standard
Health Level 7

မှတ်စုရေးသူအကြောင်း

Ko Sagaing / Software Engineer

နာမည်အရင်းမှာ လှိုင်မင်းထက်ဖြစ်ပြီး၊ ကိုစစ်ကိုင်းဆိုသည့် နာမည်ပြောင်နှင့် မိတ်ဆွေ၊ သူငယ်ချင်းများက ရင်းနှီးစွာခေါ်ကြပါသည်။ ယခင်ကမြန်မာနိုင်ငံတွင် သင်ကြားရေး နှင့် Software Development လုပ်ငန်းများတွင် ဝင်ရောက်လုပ်ကိုင်ခဲ့ပြီး၊ ယခုလက်ရှိမှာ စင်ကာပူနိုင်ငံရှိ နည်းပညာကုမ္ပဏီတစ်ခုတွင် ဝင်ရောက်လုပ်ကိုင်နေပါသည်။

0 ခုမှတ်ချက်ပေးထားတယ်။:

Post a Comment

ကိုစစ်ကိုင်း၏ မှတ်စုများ. Powered by Blogger.