|
|
@@ -25,76 +25,78 @@ import java.util.List; |
|
|
/** |
|
|
/** |
|
|
* Manages all HL7 sending tasks. This includes: creating a message, sending the message, |
|
|
* Manages all HL7 sending tasks. This includes: creating a message, sending the message, |
|
|
* Created by taschi on 22.11.15. |
|
|
* Created by taschi on 22.11.15. |
|
|
* |
|
|
|
|
|
*/ |
|
|
*/ |
|
|
public class HL7Sender { |
|
|
public class HL7Sender { |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* generates an ADT_A05 message for data exchange with OPS group |
|
|
* generates an ADT_A05 message for data exchange with OPS group |
|
|
* |
|
|
* |
|
|
* |
|
|
|
|
|
* @param fall to create the message from this content. patient and diagnosis are linked to fall |
|
|
* @param fall to create the message from this content. patient and diagnosis are linked to fall |
|
|
* @throws HL7Exception, IOException, SQLException |
|
|
* @throws HL7Exception, IOException, SQLException |
|
|
*/ |
|
|
*/ |
|
|
public static void createMessageADT_A01(Fall fall) throws HL7Exception, IOException, SQLException { |
|
|
public static void createMessageADT_A01(Fall fall) throws HL7Exception, IOException, SQLException { |
|
|
Patient patient = fall.getPatient(); |
|
|
Patient patient = fall.getPatient(); |
|
|
ADT_A01 adt = new ADT_A01(); |
|
|
|
|
|
|
|
|
ADT_A01 adt_a01 = new ADT_A01(); |
|
|
|
|
|
|
|
|
//default MSH Values (Sets Segments: 1,2,7,9,10,11 |
|
|
|
|
|
adt.initQuickstart("ADT", "A01", "P"); |
|
|
|
|
|
|
|
|
//default MSH Values (Sets Segments: 1,2,7,9,10,11,12 |
|
|
|
|
|
adt_a01.initQuickstart("ADT", "A01", "P"); |
|
|
|
|
|
|
|
|
//MSH Segment: |
|
|
//MSH Segment: |
|
|
MSH mshSegment = adt.getMSH(); |
|
|
|
|
|
mshSegment.getMsh3_SendingApplication().getNamespaceID().parse("KISGruppe6"); |
|
|
|
|
|
mshSegment.getMsh5_ReceivingApplication().getNamespaceID().parse("OPS Gruppe von Maurice und Torben"); |
|
|
|
|
|
mshSegment.getMsh12_VersionID().getVersionID().parse("2.5.1"); |
|
|
|
|
|
mshSegment.getMsh15_AcceptAcknowledgmentType().parse("AL"); |
|
|
|
|
|
|
|
|
MSH msh = adt_a01.getMSH(); |
|
|
|
|
|
msh.getMsh3_SendingApplication().getNamespaceID().parse("KISGruppe6"); |
|
|
|
|
|
msh.getMsh5_ReceivingApplication().getNamespaceID().parse("OPSGruppe3"); |
|
|
|
|
|
msh.getMsh15_AcceptAcknowledgmentType().parse("AL"); |
|
|
|
|
|
|
|
|
//EVN Segment: |
|
|
//EVN Segment: |
|
|
EVN evnSegment = adt.getEVN(); |
|
|
|
|
|
evnSegment.getEvn1_EventTypeCode().parse("A01"); |
|
|
|
|
|
evnSegment.getEvn2_RecordedDateTime().getTime().setValue(mshSegment.getDateTimeOfMessage().encode()); |
|
|
|
|
|
evnSegment.getEvn4_EventReasonCode().parse("01"); |
|
|
|
|
|
|
|
|
EVN evn = adt_a01.getEVN(); |
|
|
|
|
|
evn.getEvn1_EventTypeCode().parse("A01"); |
|
|
|
|
|
evn.getEvn2_RecordedDateTime().getTime().setValue(msh.getDateTimeOfMessage().encode()); |
|
|
|
|
|
evn.getEvn4_EventReasonCode().parse("01"); |
|
|
|
|
|
|
|
|
//PID |
|
|
//PID |
|
|
PID pidSegment = adt.getPID(); |
|
|
|
|
|
pidSegment.getPid2_PatientID().getIDNumber().parse(String.valueOf(patient.getPatID())); |
|
|
|
|
|
pidSegment.getPid3_PatientIdentifierList(0).getIDNumber().parse(Integer.toString(patient.getPatID())); |
|
|
|
|
|
pidSegment.getPid5_PatientName(0).getFamilyName().getSurname().parse(patient.getNachname()); |
|
|
|
|
|
pidSegment.getPid5_PatientName(0).getGivenName().parse(patient.getVorname()); |
|
|
|
|
|
pidSegment.getPid7_DateTimeOfBirth().getTime().setValue(Date.from(patient.getGeburtsdatum().atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())); |
|
|
|
|
|
pidSegment.getPid8_AdministrativeSex().parse(String.valueOf(patient.getGeschlecht().id())); |
|
|
|
|
|
pidSegment.getPid11_PatientAddress(0).getStreetAddress().getStreetName().parse(patient.getStrasse()); |
|
|
|
|
|
pidSegment.getPid11_PatientAddress(0).getStreetAddress().getDwellingNumber().parse(patient.getHausnummer()); |
|
|
|
|
|
pidSegment.getPid11_PatientAddress(0).getCity().parse(patient.getOrt()); |
|
|
|
|
|
pidSegment.getPid13_PhoneNumberHome(0).getTelephoneNumber().parse(patient.getTelefon()); |
|
|
|
|
|
pidSegment.getPid16_MaritalStatus().getAlternateIdentifier().parse(patient.getFamilienstand().toString()); |
|
|
|
|
|
|
|
|
PID pid = adt_a01.getPID(); |
|
|
|
|
|
pid.getPid1_SetIDPID().parse("1"); |
|
|
|
|
|
pid.getPid2_PatientID().getIDNumber().parse(String.valueOf(patient.getPatID())); |
|
|
|
|
|
pid.getPid3_PatientIdentifierList(0).getIDNumber().parse(Integer.toString(patient.getPatID())); |
|
|
|
|
|
pid.getPid5_PatientName(0).getFamilyName().getSurname().parse(patient.getNachname()); |
|
|
|
|
|
pid.getPid5_PatientName(0).getGivenName().parse(patient.getVorname()); |
|
|
|
|
|
pid.getPid7_DateTimeOfBirth().getTime().setValue(Date.from(patient.getGeburtsdatum().atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())); |
|
|
|
|
|
pid.getPid8_AdministrativeSex().parse(String.valueOf(patient.getGeschlecht().id())); |
|
|
|
|
|
pid.getPid11_PatientAddress(0).getStreetAddress().getStreetName().parse(patient.getStrasse()); |
|
|
|
|
|
pid.getPid11_PatientAddress(0).getStreetAddress().getDwellingNumber().parse(patient.getHausnummer()); |
|
|
|
|
|
pid.getPid11_PatientAddress(0).getCity().parse(patient.getOrt()); |
|
|
|
|
|
pid.getPid11_PatientAddress(0).getZipOrPostalCode().parse(patient.getPlz()); |
|
|
|
|
|
pid.getPid13_PhoneNumberHome(0).getTelephoneNumber().parse(patient.getTelefon()); |
|
|
|
|
|
pid.getPid16_MaritalStatus().getAlternateIdentifier().parse(patient.getFamilienstand().toString()); |
|
|
|
|
|
|
|
|
//Diagnosen (DG1 Segmente des PV1 Segments |
|
|
//Diagnosen (DG1 Segmente des PV1 Segments |
|
|
List<Diagnose> diagnosen = DBHandler.getDiagnosenByFall(fall); |
|
|
List<Diagnose> diagnosen = DBHandler.getDiagnosenByFall(fall); |
|
|
PV1 pv1Segment = adt.getPV1(); |
|
|
|
|
|
pv1Segment.getPv12_PatientClass().parse("U"); |
|
|
|
|
|
|
|
|
PV1 pv1 = adt_a01.getPV1(); |
|
|
|
|
|
pv1.getPv11_SetIDPV1().parse("1"); |
|
|
|
|
|
pv1.getPv12_PatientClass().parse("U"); |
|
|
|
|
|
pv1.getPv119_VisitNumber().getIDNumber().parse(String.valueOf(fall.getFallID())); |
|
|
|
|
|
|
|
|
int i = 1; |
|
|
|
|
|
for (Diagnose diagnose : diagnosen) { |
|
|
|
|
|
|
|
|
for (int i = 0; i < diagnosen.size(); i++) { |
|
|
|
|
|
Diagnose diagnose = diagnosen.get(i); |
|
|
Mitarbeiter arzt = diagnose.getArzt(); |
|
|
Mitarbeiter arzt = diagnose.getArzt(); |
|
|
DG1 dg1 = adt.getDG1(i - 1); |
|
|
|
|
|
dg1.getDg11_SetIDDG1().setValue(String.valueOf(i)); |
|
|
|
|
|
|
|
|
DG1 dg1 = adt_a01.getDG1(i); |
|
|
|
|
|
dg1.getDg11_SetIDDG1().setValue(String.valueOf(i + 1)); |
|
|
dg1.getDg13_DiagnosisCodeDG1().getIdentifier().parse(diagnose.getIcd10code().getCode()); |
|
|
dg1.getDg13_DiagnosisCodeDG1().getIdentifier().parse(diagnose.getIcd10code().getCode()); |
|
|
|
|
|
dg1.getDg13_DiagnosisCodeDG1().getNameOfCodingSystem().parse("I10"); |
|
|
|
|
|
dg1.getDg14_DiagnosisDescription().parse(diagnose.getFreiText()); |
|
|
|
|
|
dg1.getDg16_DiagnosisType().parse(diagnose.getDiagArt().id()); |
|
|
XCN xcn = dg1.getDg116_DiagnosingClinician(0); |
|
|
XCN xcn = dg1.getDg116_DiagnosingClinician(0); |
|
|
xcn.getIDNumber().setValue(arzt.getEinweisenderArzt()); |
|
|
xcn.getIDNumber().setValue(arzt.getEinweisenderArzt()); |
|
|
xcn.getGivenName().setValue(arzt.getVorname()); |
|
|
xcn.getGivenName().setValue(arzt.getVorname()); |
|
|
xcn.getFamilyName().getSurname().setValue(arzt.getNachname()); |
|
|
xcn.getFamilyName().getSurname().setValue(arzt.getNachname()); |
|
|
xcn.getPrefixEgDR().setValue(arzt.getTitel()); |
|
|
xcn.getPrefixEgDR().setValue(arzt.getTitel()); |
|
|
dg1.getDg14_DiagnosisDescription().parse(diagnose.getFreiText()); |
|
|
|
|
|
dg1.getDg16_DiagnosisType().parse(diagnose.getDiagArt().id()); |
|
|
|
|
|
i++; |
|
|
|
|
|
} |
|
|
} |
|
|
sendMessage(adt); |
|
|
|
|
|
|
|
|
sendMessage(adt_a01); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Sending message handler. Calls function to send current message |
|
|
* Sending message handler. Calls function to send current message |
|
|
|
|
|
* |
|
|
* @param message to send |
|
|
* @param message to send |
|
|
* @throws HL7Exception |
|
|
* @throws HL7Exception |
|
|
*/ |
|
|
*/ |
|
|
@@ -108,6 +110,7 @@ public class HL7Sender { |
|
|
* sends an ADT_A01 message and waits ca 5 seconds for an ACK. If no ACK occurs it sends the message ONLY 5 times again |
|
|
* sends an ADT_A01 message and waits ca 5 seconds for an ACK. If no ACK occurs it sends the message ONLY 5 times again |
|
|
* if after 5 times no ack occurs log message |
|
|
* if after 5 times no ack occurs log message |
|
|
* write log historie in database |
|
|
* write log historie in database |
|
|
|
|
|
* |
|
|
* @param message you want to send |
|
|
* @param message you want to send |
|
|
* @throws HL7Exception |
|
|
* @throws HL7Exception |
|
|
*/ |
|
|
*/ |
|
|
|