/*
* Another way of reading messages is to use a Terser. The terser
* accepts a particular syntax to retrieve segments. See the API
* documentation for the Terser for more information.
*/
Terser terser = new Terser(hapiMsg);
/*
* Sending Application is in MSH-3-1 (the first component of the third
* field of the MSH segment)
*/
String sendingApplication = terser.get("/.MSH-3-1");
System.out.println(sendingApplication);
// HIS
/*
* We can use brackets to get particular repetitions
*/
String secondAllergyType = terser.get("/AL1(1)-3-2");
System.out.println(secondAllergyType);
// DUST
// We can also use the terser to set values
terser.set("/.MSH-3-1", "new_sending_app");
// Let's try something more complicated, adding values to an OBX in an ORU^R01
ORU_R01 oru = new ORU_R01();
oru.getMSH().getEncodingCharacters().setValue("^~\\&");
oru.getMSH().getFieldSeparator().setValue("|");
oru.getMSH().getMessageType().getMessageCode().setValue("ORU");
oru.getMSH().getMessageType().getTriggerEvent().setValue("R01");
oru.getMSH().getVersionID().getVersionID().setValue("2.5");
terser = new Terser(oru);
for (int i = 0; i < 5; i++) {
terser.set("/PATIENT_RESULT/ORDER_OBSERVATION/OBSERVATION(" + i + ")/OBX-1", "" + (i + 1));
terser.set("/PATIENT_RESULT/ORDER_OBSERVATION/OBSERVATION(" + i + ")/OBX-3", "ST");
terser.set("/PATIENT_RESULT/ORDER_OBSERVATION/OBSERVATION(" + i + ")/OBX-5", "This is the value for rep " + i);
}
System.out.println(p.encode(oru));
/*