package uk.nhs.kch.rassyeyanie.rules.pims.symphony.translations.a02;
import org.apache.camel.Body;
import ca.uhn.hl7v2.HL7Exception;
import ca.uhn.hl7v2.model.DataTypeException;
import ca.uhn.hl7v2.model.Segment;
import ca.uhn.hl7v2.model.Varies;
import ca.uhn.hl7v2.model.v24.datatype.CE;
import ca.uhn.hl7v2.model.v24.datatype.ST;
import ca.uhn.hl7v2.model.v24.message.ADT_A02;
import ca.uhn.hl7v2.model.v24.segment.EVN;
import ca.uhn.hl7v2.model.v24.segment.MSH;
import ca.uhn.hl7v2.model.v24.segment.PID;
import ca.uhn.hl7v2.model.v24.segment.PV1;
public class SymA02PimsA01
{
public void transform(EVN evn)
throws HL7Exception
{
evn.getEventTypeCode().setValue("A01");
}
public void transform(MSH msh)
throws HL7Exception
{
msh.getMessageType().getTriggerEvent().setValue("A01");
}
public void dispatchProcessFixture(@Body ADT_A02 to)
throws HL7Exception
{
Segment zref = (Segment) to.get("ZRF");
this.transform(to.getPV1(), zref, to.getEVN());
this.transformZref(zref);
this.transform(to.getEVN());
this.transform(to.getMSH());
this.transform(to.getPID());
}
private void transform(PID pid)
throws DataTypeException
{
pid.getPatientID().getIdentifierTypeCode().setValue("NHS");
}
private void transformZref(Segment zref)
throws HL7Exception
{
CE ce = new CE(zref.getMessage());
((Varies) zref.getField(1, 0)).setData(ce);
ce.getCe1_Identifier().setValue("EMERG");
ce.getCe3_NameOfCodingSystem().setValue("DGATE");
}
private void transform(PV1 pv1, Segment zref, EVN evn)
throws HL7Exception
{
pv1.getPv12_PatientClass().setValue("I");
for (int i = 6; i < 9; i++)
pv1.getField(i, 0).clear();
pv1
.getPv19_ConsultingDoctor(0)
.getXcn1_IDNumber()
.setValue(zref.getField(7, 0).encode().split("\\^")[0]);
pv1.getPv110_HospitalService().setValue(
zref.getField(9, 0).encode().split("\\^")[0]);
pv1.getPv122_CourtesyCode().setValue("NSP");
pv1.getPv128_InterestCode().setValue("NSP");
zref.getField(2, 0).parse(
pv1.getPv144_AdmitDateTime().getTs1_TimeOfAnEvent().getValue());
pv1
.getPv144_AdmitDateTime()
.getTs1_TimeOfAnEvent()
.setValueToSecond(
evn
.getEvn2_RecordedDateTime()
.getTimeOfAnEvent()
.getValueAsCalendar());
pv1.getPv150_AlternateVisitID().clear();
zref.getField(5, 0).parse(zref.getField(5, 0).encode() + "^^DGATE");
zref.getField(8, 0).parse(zref.getField(9, 0).encode());
zref.getField(11, 0).parse("R^^DGATE");
((Varies) zref.getField(12, 0)).setData(new ST(zref.getMessage()));
zref.getField(12, 0).clear();
}
}