Browse Source

Sender refactored, fehlende Felder hinzugefuegt.

master
parent
commit
9c8455e7cd
2 changed files with 39 additions and 37 deletions
  1. +0
    -1
      src/main/java/de/uniluebeck/mi/projmi6/Main.java
  2. +39
    -36
      src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Sender.java

+ 0
- 1
src/main/java/de/uniluebeck/mi/projmi6/Main.java View File

@@ -106,7 +106,6 @@ public class Main extends Application {
LoggerFactory.getLogger(Main.class).error("App already running or Port 1111 in use.");
System.exit(2);
}

launch(args);
}



+ 39
- 36
src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Sender.java View File

@@ -25,76 +25,78 @@ import java.util.List;
/**
* Manages all HL7 sending tasks. This includes: creating a message, sending the message,
* Created by taschi on 22.11.15.
*
*/
public class HL7Sender {

/**
* 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
* @throws HL7Exception, IOException, SQLException
*/
public static void createMessageADT_A01(Fall fall) throws HL7Exception, IOException, SQLException {
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 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 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 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
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();
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().getNameOfCodingSystem().parse("I10");
dg1.getDg14_DiagnosisDescription().parse(diagnose.getFreiText());
dg1.getDg16_DiagnosisType().parse(diagnose.getDiagArt().id());
XCN xcn = dg1.getDg116_DiagnosingClinician(0);
xcn.getIDNumber().setValue(arzt.getEinweisenderArzt());
xcn.getGivenName().setValue(arzt.getVorname());
xcn.getFamilyName().getSurname().setValue(arzt.getNachname());
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
*
* @param message to send
* @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
* if after 5 times no ack occurs log message
* write log historie in database
*
* @param message you want to send
* @throws HL7Exception
*/


Loading…
Cancel
Save