| @@ -0,0 +1,83 @@ | |||
| package de.uniluebeck.mi.projmi6; | |||
| import ca.uhn.hl7v2.model.v251.message.ADT_A01; | |||
| import ca.uhn.hl7v2.model.v251.segment.*; | |||
| import de.uniluebeck.mi.projmi6.model.Diagnose; | |||
| import de.uniluebeck.mi.projmi6.model.Fall; | |||
| import de.uniluebeck.mi.projmi6.model.Patient; | |||
| import java.time.LocalDate; | |||
| import java.util.ArrayList; | |||
| import java.util.List; | |||
| /** | |||
| * Created by taschi on 15.11.15. | |||
| * enthaelt alle Klassen um eine Hl7 Nachricht zu erstellen bzw. zu Parsen. | |||
| */ | |||
| public class HL7 { | |||
| /** | |||
| * erstellt eine ADT_A0 nachricht, welche anschließend an die OPS Gruppe verschickt werden soll. | |||
| * TODO Mit OPS Gruppe absprechen, welche Informationen sie auf jeden Fall benötigen und Code entsprechend anpassen. | |||
| * @param fall nach dem Erstellen eines neuen Falls wird diese Methode aufgerufen um Hl7 Nachricht zu erzeugen | |||
| * @param diagnosen Liste aller Nebendiagnosen momentan noch als einzelne Liste uebereben. eventuell die Nebendiagnosen direkt im Fall speichern? | |||
| * @throws Exception | |||
| */ | |||
| public void createMessageADTA01( Fall fall, List<Diagnose> diagnosen) throws Exception{ | |||
| Patient patient = fall.getPatient (); | |||
| ADT_A01 adt = new ADT_A01 (); | |||
| //default MSH Values (Sets Segments: 1,2,7,9 | |||
| adt.initQuickstart ("ADT", "A01", "P"); | |||
| //MSH Segment: | |||
| MSH mshSegment = adt.getMSH(); | |||
| mshSegment.getMsh3_SendingApplication ().getNamespaceID ().setValue ( "KISGruppe6" ); | |||
| mshSegment.getMsh5_ReceivingApplication ().getNamespaceID ().setValue("OPS Gruppe von Maurice und Torben"); | |||
| mshSegment.getMsh12_VersionID ().getVersionID ().setValue ( "2.2" ); | |||
| mshSegment.getMsh15_AcceptAcknowledgmentType ().setValue ( "AL" ); | |||
| //Security? | |||
| //Message Control ID? | |||
| //Processing ID? | |||
| //Sequence Number ? | |||
| //Contituation Pointer ? | |||
| //Cointry Code | |||
| //Character Set | |||
| //Principal Language of Message | |||
| //EVN Segment: | |||
| EVN evnSegment = adt.getEVN (); | |||
| evnSegment.getEvn1_EventTypeCode ().setValue ("A01"); | |||
| evnSegment.getEvn4_EventReasonCode ().setValue ( "01" ); | |||
| //Operator ID | |||
| //Event occured | |||
| //PID | |||
| PID pidSegment = adt.getPID (); | |||
| pidSegment.getPid3_PatientIdentifierList (0).getIDNumber ().setValue ( Integer.toString(patient.getPatID ()) ); | |||
| pidSegment.getPid5_PatientName (0).getFamilyName ().getSurname ().setValue ( patient.getNachname () ); | |||
| pidSegment.getPid5_PatientName (0).getGivenName ().setValue ( patient.getVorname () ); | |||
| pidSegment.getPid7_DateTimeOfBirth ().getTime ().setValue ( patient.getGeburtsdatum ().toString () ); | |||
| pidSegment.getPid8_AdministrativeSex ().setValue ( patient.getGeschlecht ().toString () ); | |||
| pidSegment.getPid11_PatientAddress (0).getStreetAddress ().getStreetName().setValue ( patient.getStrasse () ); | |||
| pidSegment.getPid11_PatientAddress (0).getStreetAddress ().getDwellingNumber ( ).setValue ( patient.getHausnummer () ); | |||
| pidSegment.getPid11_PatientAddress (0).getCity ().setValue (patient.getOrt () ); | |||
| pidSegment.getPid13_PhoneNumberHome (0).getTelephoneNumber ().setValue ( patient.getTelefon () ); | |||
| pidSegment.getPid16_MaritalStatus ().getAlternateIdentifier ().setValue ( patient.getFamilienstand ().toString()); | |||
| //Dg1 (Diagnosen) | |||
| List<DG1> dg1List = new ArrayList<> ( ); | |||
| diagnosen.add(fall.getHauptDiagnose ()); | |||
| DG1 dg1Segment = adt.getDG1 (); | |||
| for (Diagnose aDiagnosen : diagnosen) { | |||
| dg1Segment = adt.getDG1 (); | |||
| dg1Segment.getDg12_DiagnosisCodingMethod ().setValue ( "ICD10" ); | |||
| dg1Segment.getDg13_DiagnosisCodeDG1 ().getIdentifier ().setValue ( "CODE" ); | |||
| dg1Segment.getDg14_DiagnosisDescription ().setValue ( aDiagnosen.getFreiText () ); | |||
| dg1List.add ( dg1Segment ); | |||
| } | |||
| } | |||
| } | |||