2017-02-27 60 views
1

对于HL7(健康等级7)我使用Hapi从HL7标准信息读取病人信息

写操作: -

 ADT_A01 adt = new ADT_A01(); 
    adt.initQuickstart("ADT", "A01", "P"); 

     // Populate the MSH Segment 
     MSH mshSegment = adt.getMSH(); 
     mshSegment.getSendingApplication().getNamespaceID().setValue("TestSendingSystem"); 
     mshSegment.getSequenceNumber().setValue("123"); 

     // Populate the PID Segment 
     PID pid = adt.getPID(); 
     pid.getPatientName(0).getFamilyName().getSurname().setValue("Doe"); 
     pid.getPatientName(0).getGivenName().setValue("John"); 
     pid.getPatientIdentifierList(0).getID().setValue("123456"); 

     pid.getAdministrativeSex().setValue("M"); 

     pid.getPhoneNumberHome(0).getPhoneNumber().setValue("90000000000"); 

     pid.getPatientAddress(0).getStreetAddress().getStreetName().setValue("B201, Abc street"); 
     pid.getPatientAddress(0).getCity().setValue("Noida"); 
     pid.getPatientAddress(0).getStateOrProvince().setValue("UP"); 
     pid.getPatientAddress(0).getCountry().setValue("India"); 

     // Now, let's encode the message and look at the output 
     HapiContext context = new DefaultHapiContext(); 
     Parser parser = context.getPipeParser(); 
     String encodedMessage = parser.encode(adt); 
     System.out.println("Printing ER7 Encoded Message:"); 
     System.out.println(encodedMessage); 

输出继电器:

印刷ER7编码信息: MSH | ^〜\ & | TestSendingSystem |||| 20170227154106.7 54 + 0530 || ADT^A01^ADT_A01 | 1301 | P | 2.4 | 123 PID ||| 123456 || Doe^John ||| M ||| & B201,美国广播公司街^^诺伊达^ UP ^^ ||印度^^^^^^ 900亿

读操作:

 HapiContext context2 = new DefaultHapiContext(); 
     Parser p = context2.getGenericParser(); 
     Message hapiMsg; 

     try { 
      hapiMsg = p.parse(encodedMessage); 
     } catch (EncodingNotSupportedException e) { 
      return; 
     } catch (HL7Exception e) { 
      return; 
     } 

     ADT_A01 adtMsg = (ADT_A01)hapiMsg; 
     MSH msh = adtMsg.getMSH(); 

    // Retrieve some data from the MSH segment 
    String msgType = msh.getMessageType().getMessageType().getValue(); 
    String msgTrigger = msh.getMessageType().getTriggerEvent().getValue(); 

    System.out.println("Decode : "); 
    System.out.println(msgType + " " + msgTrigger); 

输出:

解码: ADT A01

我如何获得患者信息来自此消息的信息。 请建议我! 谢谢

+0

我不熟悉哈啤,但我想尝试'adtMsg.getPID()getPatientName(0).getFamilyName(。 ).getSurname()。getValue()' – xmojmr

+0

谢谢@xmojmr !!我知道了 –

回答

1

我解决了!
这里是我的解决方案:

 PID pid1 = adtMsg.getPID(); 
    String id = pid.getPatientIdentifierList(0).getID().getValue(); 
    System.out.println("PID : "+id); 
    String last = pid1.getPatientName(0).getFamilyName().getSurname().getValue(); 
    String first = pid1.getPatientName(0).getGivenName().getValue(); 
    System.out.println("Patient Name : "+first+" "+last); 

输出

Decode : 
------------------ 
Message Type : ADT 
Message Trigger : A01 
PID : 123456 
Patient Name : John Doe