首页 文章

HAPI:Hl7 Parser不会将段分开,将所有数据附加到一个HL7段中

提问于
浏览
2

我只是尝试使用HAPI API创建HL7 V2.6消息 . 我正在使用最新的2.2 API .

当我尝试打印消息时,所有数据仅附加在一个段中 . 这是我的代码 -

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:jamesagnew@sourceforge.net">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 || Doe ^ Johntem |||| 20160615 || ADT ^ A01 ^ ADT_A01 | 12345 | P | 2.6 | 123 || AL

没有MSH?请帮忙 .

当我打印V2 XML消息时,它正确地出来 . 有人可以提供解决问题的帮助 .

我从HAPI网站上采取了这个例子 - http://hl7api.sourceforge.net/xref/ca/uhn/hl7v2/examples/CreateAMessage.html

1 回答

  • 1

    看来你的println打印了一行中的所有段,因此用PID段覆盖了MSH段 . 我猜你用的是Windows .

    您可以在输出中看到部分MSH段 . 尝试调整您的终端程序,以便在回车或使用其他控制台程序后也生成换行符/换行符 .

    您还可以将printf打印到文件中,并使用仅适用于回车的编辑器检查输出 .

相关问题