2016-06-16 4 views
1

HAPI API를 사용하여 HL7 V2.6 메시지를 간단하게 만들려고합니다. 최신 2.2 API를 사용하고 있습니다.HAPI : H17 파서는 세그먼트를 분리하지 않고 하나의 HL7 세그먼트에 모든 데이터를 추가합니다.

메시지를 인쇄하려고하면 모든 데이터가 하나의 세그먼트에만 추가됩니다. 여기 내 코드 -

package com.psl; 

import ca.uhn.hl7v2.DefaultHapiContext; 
import ca.uhn.hl7v2.HapiContext; 
import ca.uhn.hl7v2.model.v26.message.ADT_A01; 
import ca.uhn.hl7v2.model.v26.segment.MSH; 
import ca.uhn.hl7v2.model.v26.segment.PID; 
import ca.uhn.hl7v2.parser.Parser; 

/** 
      * Example transmitting a message 
      * 
      * @author <a href="mailto:[email protected]">James Agnew</a> 
      * @version $Revision: 1.4 $ updated on $Date: 2009-10-03 15:29:05 $ by $Author: jamesagnew $ 
      */ 
      public class CreateAMessage 
      { 

       /** 
       * @param args 
       * @throws HL7Exception 
       */ 
       public static void main(String[] args) throws Exception { 

       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.getDateTimeOfMessage().setDatePrecision(2016,06,15); 
        mshSegment.getMsh10_MessageControlID().setValue("12345"); 
        mshSegment.getSequenceNumber().setValue("123"); 
        mshSegment.getAcceptAcknowledgmentType().setValue("AL");; 


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

       /* 
        * In a real situation, of course, many more segments and fields would be populated 
        */ 

        // 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); 

        /* 
        * Prints: 
        * 
        * MSH|^~\&|TestSendingSystem||||200701011539||ADT^A01^ADT A01||||123 
        * PID|||123456||Doe^John 
        */ 

        // Next, let's use the XML parser to encode as XML 
        parser = context.getXMLParser(); 
        encodedMessage = parser.encode(adt); 
        System.out.println("Printing XML Encoded Message:"); 
        System.out.println(encodedMessage); 

    } 

} 

콘솔입니다 출력 :

콘솔 출력 : PID ||| 1234567 || 미상^Johntem |||| 20160615 || ADT^A01^ADT_A01 | 12345 | P | 2.6 | 123 || AL

MSH가 없습니까? 도와주세요.

V2 XML 메시지를 인쇄 할 때 올바르게 출력됩니다. 누군가 문제 해결에 도움을 주시겠습니까? 내가 HAPI에서이 예제를 촬영 한

그것은 한 줄에 모든 세그먼트 당신에 println 인쇄를 보인다 그래서 PID 세그먼트와 MSH 세그먼트를 덮어 http://hl7api.sourceforge.net/xref/ca/uhn/hl7v2/examples/CreateAMessage.html

답변

1

을 웹 사이트 -. 나는 당신이 Windows를 사용하는 것 같아요.

출력에서 ​​MSH 세그먼트의 일부를 볼 수 있습니다. 터미널 프로그램을 조정하거나 캐리지 리턴 후 줄 바꿈/줄 바꿈을 만들거나 다른 콘솔 프로그램을 사용하도록 조정하십시오.

파일로 printf를 입력하고 캐리지 리턴만으로 작동하는 편집기를 사용하여 출력을 검사 할 수도 있습니다.

+0

감사합니다. 내가 파일에 작성하고 메모장 + +로 열고 올바른 메시지를 볼 수 있습니다. Windows에서 작동하지 않는 이유를 모르겠습니다. Java 코드를 작성하고 메시지를 인쇄하기 위해 Eclipse 도구를 사용하고 있습니다. –