首页 文章

在Java中创建包含RXO段的正确HL7消息

提问于
浏览
1

我试图用Java创建一个HL7消息,然后打印生成的消息 . 我伪造基本的患者信息,然后添加药物处方信息 . 然后,我想打印完整的消息,但我无法正确使用API . 我是使用HL7的新手,所以我知道我可能错过了一些必需的部分甚至使用了错误的部分,你能帮忙吗?这是我目前的代码:

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 将打印以下消息:

MSH | ^〜\&||||| 20160331101349.8 0100 || ADT ^ A08 | 110001 | PDE-00001E6FADAD3F57 | 2.3 PID ||||| CMS姓氏100~ ^ CMS名称100 |||女性

但我也期待看到RXO细分市场 . 我怎样才能做到这一点?

1 回答

  • 1

    我发现将消息类型从ADT_A28更改为ORP_O10会让我拥有我需要的所有字段,因为ADT_A28不是't the appropriate message for the kind of information I needed. There'这是如何在此类消息中设置大量段的完整示例here . 然后,我能够使用PipeParser打印完整的消息:

    HapiContext context = new DefaultHapiContext();
            Parser parser = context.getPipeParser();
            String encodedMessage =  parser.encode(msg);
            logger.debug("Printing EREncoded Message:");
            logger.debug(encodedMessage);
    

相关问题