我是HL7的新手 . 我正在尝试使用HAPI 2.4构造HL7消息ORU_R01类型 . 当我在下面的代码中添加 patient details 时,我的消息格式不正确;否则格式没问题 . 如何解决这个问题?是否有任何示例用PID,ORC,OBR和OBX构造HL7 ORU消息?
Output without patient
MSH | ^〜\&| IM | ABC-ClinPath | ABC-兽医| ABC-VetMed | 20180412124041 || ORU ^ R01
Output with patient (如果我在代码中评论患者详情)
PID ||测试||| ^ TESTlinPath | ABC-兽医| ABC-VetMed | 20180412124041 || ORU ^ R01
import ca.uhn.hl7v2.model.v24.message.ORM_O01;
import ca.uhn.hl7v2.HapiContext;
import ca.uhn.hl7v2.DefaultHapiContext;
import ca.uhn.hl7v2.parser.Parser;
import ca.uhn.hl7v2.model.v24.segment.MSH;
import ca.uhn.hl7v2.model.v24.group.ORM_O01_PATIENT;
public class CreateORUMessage {
private String sendingApplication = "IM";
private String sendingFacility = "ABC-ClinPath";
private String receivingApplication = "ABC-vet";
private String receivingFacility = "ABC-VetMed";
private void createHL7Message(){
try{
ORM_O01 order = new ORM_O01();
//ORU_R01 oru = new ORU_R01();
// Populate the MSH Segment
// Example - MSH|^~\&|HISA_8592|HISF_2603|||200706081131||ADT^A04|HL7O.1.11379|D|2.1
MSH mshSegment = order.getMSH();
mshSegment.getFieldSeparator().setValue("|");
mshSegment.getEncodingCharacters().setValue("^~\\&");
mshSegment.getSendingApplication().getNamespaceID().setValue(sendingApplication);
mshSegment.getSendingFacility().getNamespaceID().setValue(sendingFacility);
mshSegment.getReceivingApplication().getNamespaceID().setValue(receivingApplication);
mshSegment.getReceivingFacility().getNamespaceID().setValue(receivingFacility);
mshSegment.getDateTimeOfMessage().getTimeOfAnEvent().setValue("20180412124041");
mshSegment.getMessageType().getMessageType().setValue("ORU");
mshSegment.getMessageType().getTriggerEvent().setValue("R01");
//PID - patient details
ORM_O01_PATIENT orm_pid = order.getPATIENT();
orm_pid.getPID().getPid5_PatientName(0).getGivenName().setValue("TEST");
orm_pid.getPID().getPid2_PatientID().getCx1_ID().setValue("TEST");
// Now, let's encode the message and look at the output
HapiContext context = new DefaultHapiContext();
Parser parser = context.getPipeParser();
String encodedMessage = parser.encode(order);
System.out.println("Printing ER7 Encoded Message:");
System.out.println(encodedMessage);
//String msg = order.encode();
//System.out.println(msg);
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]){
new CreateORUMessage().createHL7Message();
}
}
我也尝试了其他方式,但它不起作用:(
String msg = order.encode();
System.out.println(msg);
1 回答
您的问题很可能是,HL7中的段分隔符是
CR
,它只是将光标重置为行的开头,下一行将覆盖前一行 . 这只会影响将消息写入控制台 . 写入文件或通过TCP发送应该没有任何进一步的转换 .我在应用程序中遇到了同样的问题,这是我的解决方案 .
replaceNewLines()
的代码非常简单