2016-03-31 7 views
1

Ich versuche, eine HL7-Nachricht in Java zu erstellen und dann die resultierende Nachricht zu drucken. Ich täusche grundlegende Patienteninformationen vor und füge dann die Arzneimittelverordnungsinformationen hinzu. Dann möchte ich die vollständige Nachricht drucken, aber ich konnte die API nicht korrekt verwenden. Ich bin neu in der Verwendung von HL7, also weiß ich, dass ich wahrscheinlich einige erforderliche Segmente vermisse und sogar die falschen benutze, kannst du bitte helfen? Dies ist mein aktueller Code:Erstellen Sie korrekte HL7-Nachricht mit RXO-Segment in Java

public RXO runDrugPrescriptionEvent(CMSGeneric cmsgen) { 

     CMSDrugPrescriptionEvent cmsic = (CMSDrugPrescriptionEvent) cmsgen; 

     ADT_A28 adt23 = new ADT_A28(); 

     try { 
      adt23.initQuickstart("ADT", "A08", cmsic.getPDE_EVENT_ID()); 

      // We set the sex identity (male or female) 
      if (cmsic.getBENE_SEX_IDENT_CD() == 1) { 
       adt23.getPID().getSex().setValue("Male"); 
      } 
      else { 
       adt23.getPID().getSex().setValue("Female"); 
      } 

      // We set a fake name and family name 
      adt23.getPID().insertPatientName(0).getGivenName().setValue("CMS Name " + MainTest.NEXT_PATIENT_ID); 
      adt23.getPID().insertPatientName(0).getFamilyName().setValue("CMS Family name " + MainTest.NEXT_PATIENT_ID); 
      MainTest.NEXT_PATIENT_ID++; 

      RXO rxo = new RXO(adt23, new DefaultModelClassFactory()); 
      rxo.getRxo1_RequestedGiveCode().getCe1_Identifier().setValue("" + cmsic.getPDE_DRUG_CD()); 
      rxo.getRxo18_RequestedGiveStrength().setValue("" + cmsic.getPDE_DRUG_STR_CD()); 
      rxo.getRxo19_RequestedGiveStrengthUnits().getCe1_Identifier().setValue("" + cmsic.getPDE_DRUG_STR_UNITS()); 
      rxo.getRxo5_RequestedDosageForm().getCe1_Identifier().setValue("" + cmsic.getPDE_DRUG_DOSE_CD()); 

      rxo.getRxo11_RequestedDispenseAmount().setValue("" + cmsic.getPDE_DRUG_QTY_DIS()); 

      HapiContext context = new DefaultHapiContext(); 
      Parser parser = context.getPipeParser(); 
      String encodedMessage = adt23.getParser().encode(rxo.getMessage()); 

      logger.debug("Printing Message:"); 
      logger.debug(encodedMessage); 

      return rxo; 
     } catch (IOException e) { 
      System.out.println("IOException creating HL7 message. " + e.getMessage()); 
      e.printStackTrace(); 
     } catch (HL7Exception e) { 
      System.out.println("HL7Exception creating HL7 message. " + e.getMessage()); 
      e.printStackTrace(); 
     } 

     return null; 
    }  

Mit diesem Code druckt der Logger die folgende Meldung:

MSH |^~ \ & ||||| 20160331101349,8 + 0100 || ADT^A08 | 110001 | PDE-00001E6FADAD3F57 | 2.3 PID ||||| CMS Nachname 100 ~^CMS-Name 100 ||| weiblich

Aber ich erwartete das RXO Segment als auch zu sehen. Wie kann ich das erreichen?

Antwort

1

Ich fand, dass die Änderung des Nachrichtentyps von ADT_A28 zu ORP_O10 mir alle Felder haben würde, die ich benötige, da ADT_A28 nicht die passende Nachricht für die Art von Information war, die ich brauchte. Es gibt ein vollständiges Beispiel dafür, wie Sie eine große Anzahl von Segmenten in diesem Nachrichtentyp festlegen können: here. Dann war ich in der Lage, die vollständige Nachricht unter Verwendung des PipeParser zu drucken:

Verwandte Themen