HAPI: Hl7 解析器不分离段,将所有数据附加在一个 HL7 段中
HAPI: Hl7 Parser do not separate segments, appending all data in one HL7 Segment
我只是想通过使用 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
您的 println 似乎在一行中打印了所有段,因此用 PID 段覆盖了 MSH 段。我猜你使用 Windows.
您可以在输出中看到部分 MSH 段。尝试调整您的终端程序,这样它也可以在回车后换行/换行 return 或使用不同的控制台程序。
您还可以将 printf 打印到一个文件中,然后使用仅支持回车 return 的编辑器检查输出。
我只是想通过使用 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
您的 println 似乎在一行中打印了所有段,因此用 PID 段覆盖了 MSH 段。我猜你使用 Windows.
您可以在输出中看到部分 MSH 段。尝试调整您的终端程序,这样它也可以在回车后换行/换行 return 或使用不同的控制台程序。
您还可以将 printf 打印到一个文件中,然后使用仅支持回车 return 的编辑器检查输出。