【发布时间】:2018-11-16 13:34:01
【问题描述】:
我正在尝试使用 HAPI 解析 HL7 消息版本 2.8。在此之前,我能够从 MSH、EVN、PID、PV1 等每个细分市场中获取价值。但现在只从 MSH 段其他段(EVN、PId、PV1)获得价值为 NULL。请查看我的代码并为我提供解决方案。
public class ADTService {
AWSCredentials awsCredentials = null;
AmazonDynamoDBClient amazonDynamoDBClient = null;
public Reply sendADTMessage() throws HL7Exception {
Reply reply = new Reply();
PatientInfo patientInfo = new PatientInfo();
byte[] valueDecoded= Base64.decode("TVNIfF5+XFwmfFNtYXJ0fDgwMDB8fEZ8MjAxMzA3MzExMzIyNTl8fEFEVF5BMDF8NDM0MzQzfFB8Mi44fHx8QUx8TkUKRVZOfFAwM3wyMDEzMDczMTEzMjI1OXx8T3x8MjAxMzA3MzExMzIyNTkKUElEfDF8UjQzNTQzNXxSNDM1NDM1fHxCQVRJU1RFXkFOVE9JTkVefHwxOTI1MDIyODAwMDAwMHxNfHx8fHx8fHx8fHw0MzgyNjEzMDcKUFYxfDF8SXxVLTAxXjQwN15BfHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHwyMDEwMTAwNTAwMDAwMA==");
String decodedADT = new String(valueDecoded);
System.out.println("Decoded value is " + decodedADT);
HapiContext context = new DefaultHapiContext();
context.setValidationContext(new NoValidation());
try {
Parser p = context.getGenericParser();
Message hapiMsg = p.parse(decodedADT);
System.out.println("Decoded value 1 is " + hapiMsg);
ADT_A01 adtMsg = (ADT_A01)hapiMsg;
MSH msh = adtMsg.getMSH();
PID pid = adtMsg.getPID();
EVN event = adtMsg.getEVN();
PV1 pv1 = adtMsg.getPV1();
System.out.println("MSH sending application "+msh.getSendingApplication().getNamespaceID().getValue());
System.out.println("MSH sending facility "+msh.getSendingFacility().getNamespaceID().getValue());
System.out.println("MSH receiving application "+msh.getReceivingApplication().getNamespaceID().getValue());
System.out.println("MSH receiving facility "+msh.getReceivingFacility().getNamespaceID().getValue());
System.out.println("MSH datetime of message "+msh.getDateTimeOfMessage().getValue());
System.out.println("MSH message control id "+msh.getMessageControlID().getValue());
System.out.println("MSH ADT Event "+msh.getMessageType().getMessageCode().getValue()+"-"+msh.getMessageType().getTriggerEvent().getValue());
System.out.println();
System.out.println("EVN recorded datetime "+event.getRecordedDateTime().getValue());
System.out.println();
System.out.println("PID patient id "+pid.getPatientIdentifierList(0).getIDNumber().getValue());
System.out.println("PID patient id "+pid.getPatientID().getValue());
System.out.println("PID last name "+pid.getPatientName(0).getFamilyName().getFn1_Surname().getValue());
System.out.println("PID first name "+pid.getPatientName(0).getGivenName().getValue());
System.out.println("PID dob "+pid.getDateTimeOfBirth().getValue());
System.out.println("PID gender "+pid.getAdministrativeSex().getIdentifier().getValue());
System.out.println();
System.out.println("PV1 admit datetime "+pv1.getAdmitDateTime().getValue());
System.out.println("PV1 bed status "+pv1.getBedStatus().getValueSetOID());
System.out.println("PV1 assigned patient location bed "+pv1.getAssignedPatientLocation().getBed().getNamespaceID().getValue());
System.out.println("PV1 assigned patient location room "+pv1.getAssignedPatientLocation().getRoom().getNamespaceID().getValue());
System.out.println("PV1 assigned patient location floor "+pv1.getAssignedPatientLocation().getFloor().getNamespaceID().getValue());
System.out.println("PV1 assigned patient location building "+pv1.getAssignedPatientLocation().getBuilding().getNamespaceID().getValue());
System.out.println("PV1 prior patient location bed "+pv1.getPriorPatientLocation().getBed().getNamespaceID().getValue());
System.out.println("PV1 prior patient location room "+pv1.getPriorPatientLocation().getRoom().getNamespaceID().getValue());
System.out.println("PV1 prior patient location fllor "+pv1.getPriorPatientLocation().getFloor().getNamespaceID().getValue());
System.out.println("PV1 prior patient location building "+pv1.getPriorPatientLocation().getBuilding().getNamespaceID().getValue());
System.out.println("PV1 discharge datetime "+pv1.getDischargeDateTime().getValue());
patientInfo.setSendingApplication(msh.getSendingApplication().getNamespaceID().getValue());
patientInfo.setSendingFacility(msh.getSendingFacility().getNamespaceID().getValue());
patientInfo.setPatientId(pid.getPatientIdentifierList(0).getIDNumber().getValue());
patientInfo.setGivenName(pid.getPatientName(0).getGivenName().getValue());
patientInfo.setAdministrativeSex(pid.getAdministrativeSex().getIdentifier().getValue());
} catch (Exception e) {
e.getStackTrace();
} finally{
try {
context.close();
} catch (IOException e) {
context = null;
e.printStackTrace();
}
}
patientInfo.setPatientDetails(decodedADT);
ADTService adtService = new ADTService();
adtService.savePatientDetails(patientInfo);
//System.out.println(ADTMessage.Contents);
reply = SubProcess();
return reply;
}
【问题讨论】:
-
你能把你的代码改写成minimal reproducible example吗?