2016-03-31 7 views
1

Java'da bir HL7 iletisi oluşturmaya çalışıyorum ve ardından oluşan mesajı yazdırıyorum. Temel hasta bilgilerini numaralandırıyorum ve ardından İlaç Reçetesi bilgisini ekliyorum. Ardından, iletinin tamamını yazdırmak istiyorum ancak API'yi doğru bir şekilde kullanamadım. HL7'yi kullanmakta yeniyim, bu yüzden muhtemelen gerekli bazı bölümleri kaçırdığımı ve hatta yanlış olanları bile kullandığımı biliyorum, lütfen yardım edebilir misiniz? Bu benim şimdiki kodudur: Bu kod ileJava'da RXO segmenti içeren doğru HL7 iletisini oluşturma

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; 
    }  

, logger aşağıdaki iletiyi yazdırır:

MSH |^~ \ & 0100 + 20160331101349,8 ||||| || ADT^A08 | 110001 | PDE-00001E6FADAD3F57 | 2.3 PID ||||| CMS Soyadı 100 ~^CMS adı 100 ||| Kadın

Ama bunun da RXO segmenti görmeyi bekliyordum. Bunu nasıl başarabilirim?

cevap

1

ADT_A28'den ORP_O10'a ileti türünü değiştirmenin, ihtiyacım olan tüm bilgiler için ADT_A28'in gerekli bilgi için uygun bir mesaj olmadığı konusunda izin verdiğimi buldum. Bu tür ileti here'da büyük miktarda bölümün nasıl ayarlanacağı hakkında tam bir örnek var. Sonra, tüm mesajı PipeParser:

 HapiContext context = new DefaultHapiContext(); 
     Parser parser = context.getPipeParser(); 
     String encodedMessage = parser.encode(msg); 
     logger.debug("Printing EREncoded Message:"); 
     logger.debug(encodedMessage); 
kullanarak basmayı başardım.