【问题标题】:HapiTestPanel, ORU-R01 messageHapiTestPanel,ORU-R01 消息
【发布时间】:2014-11-13 13:29:51
【问题描述】:

我正在尝试使用 HapiTestPanel 在 IHE 标准(ORU-R01 消息类型)上创建一条 HL7 消息,并且在 OBX 字段的开头有一个意外的空字,但我不知道在哪里错误..

发送此消息:

MSH|^~\&|LiFETouch17|LiFETouch17Facility|AnesthesiaApp|AnesthesiaAppFacility|20141112144500||ORU^R01^ORU_R01|Q123456789T123456789X123456|P|2.6||||||||IHE PCD ORU-R01 PID|||123456789|012345678 9^AA^^JP|兄弟^MARIO||19850101000000|M|||123 FAKE STREET^MARIO LUIGI BROS PLACE^TOADSTOOL KINGDOM^NES^A1B2C3^JP^HOME^^1234|1234 PV1||O|ABCD^EFGH||||123456^DINO^YOSHI^^^^^^MSRM^CURRENT^^^NEIGHBOURHOOD 丁腈橡胶博士|^狗^鸭 UNT^^^^^^^CURRENT|||||||||123456^DINO^YOSHI^^^^^^MSRM^CURRENT^^^NEIGHBOURHOOD DR NBR||0123456789|||||||||||||||||||||||20010101000000 OBR | 1 | 080019FFF4F6AFE20081211144657 ^ eui-64 | 080019FFF4F6AC0 ^ EUI-64 | 080019FFF4F6AC020081211144657 ^ eui-64 ^ 080019FFF4F6AC0 ^ EUI-64 | 126.169.95.2 ^ 2000 ^ MDC ||| 20081211144500 OBX|1|NM|147842^MDC_ECG_HEART_RATE^MDC|1.1.1.1|60|264864^/min^UCUM|||||R OBX|2|NM|150324^MDC_SAT_O2_ART^MDC|1.2.1.1|98|262688^MDC_DIM_PERCENT^MDC|||||R OBX|3|NM|150021^MDC_PRESS_BLD_NONINV_SYS^MDC|1.3.1.1|120|266016^MDC_DIM_MMHG^MDC|||||R OBX|4|NM|150022^MDC_PRESS_BLD_NONINV_DIA^MDC|1.6.1.1|80|266016^MDC_DIM_MMHG^MDC|||||R OBX|5|NM|150023^MDC_PRESS_BLD_NONINV_MEAN^MDC|1.6.1.1|100|266016^MDC_DIM_MMHG^MDC|||||R OBX|6|NM|150037^MDC_PRESS_BLD_ART_ABP_SYS^MDC|1.6.1.1|126|266016^MDC_DIM_MMHG^MDC|||||R OBX|7|NM|150038^MDC_PRESS_BLD_ART_ABP_DIA^MDC|1.6.1.1|76|266016^MDC_DIM_MMHG^MDC|||||R OBX|8|NM|150039^MDC_PRESS_BLD_ART_ABP_MEAN^MDC|1.6.1.1|92|266016^MDC_DIM_MMHG^MDC|||||R OBX|9|NM|151728^MDC_AWAY_CO2_ET^MDC|1.6.1.1|60|266016^MDC_DIM_MMHG^MDC|||||R OBX|10|NM|151562^MDC_RESP_RATE^MDC|1.6.1.1|60|264928^MDC_DIM_RESP_PER_MIN^MDC|||||R||||||||| OBX|11|NM|150364^MDC_TEMP_BODY^MDC|1.0.0.9|37|268192^MDC_DIM_DEGC^MDC|||||R OBX|12|NM|150364^MDC_EEG_BISPECTRAL_INDEX^MDC|1.0.0.9|37|262656^MDC_DIM_DIMLESS^MDC|||||R OBX|13|NM|131840^MDC_ECG_AMPL_ST|1.0.0.9|37|266418^MDC_DIM_MILLI_VOLT^MDC|||||R

我在受体中得到了这个:

MSH|^~\&|LiFETouch17|LiFETouch17Facility|AnesthesiaApp|AnesthesiaAppFacility|20141112144500||ORU^R01^ORU_R01|Q123456789T123456789X123456|P|2.6||||||||IHE PCD ORU-R01

PID|||123456789|012345678 9^AA^^JP|兄弟^MARIO||19850101000000|M|||123 假街^MARIO LUIGI BROS PLACE^TOADSTOOL 王国^NES^A1B2C3^JP^HOME^^1234|1234

PV1||O|ABCD^EFGH||||123456^DINO^YOSHI^^^^^^MSRM^CURRENT^^^NEIGHBOURHOOD 丁腈橡胶博士|^狗^鸭 UNT^^^^^^^CURRENT|||||||||123456^DINO^YOSHI^^^^^^MSRM^CURRENT^^^NEIGHBOURHOOD DR NBR||0123456789|||||||||||||||||||||||20010101000000

OBR | 1 | 080019FFFF4F6AFE20081211144657 ^ AwareGateway ^ 080019FFFF4F6AC0 ^ EUI-64 | 080019FFFF4F6AC020081211144657 ^ AwareGateway ^ 080019FFFF4F6AC0 ^ EUI-64 | 126.169.95.2 ^ 2000 ^ MDC ||| 20081211144500 P>

nullOBX|1|NM|147842^MDC_ECG_HEART_RATE^MDC|1.1.1.1|60|264864^/min^UCUM|||||ROBX|2|NM|150324^MDC_SAT_O2_ART^ MDC|1.2.1.1|98|262688^MDC_DIM_PERCENT^MDC|||||ROBX|3|NM|150021^MDC_PRESS_BLD_NONINV_SYS^MDC|1.3.1.1|120|266016^MDC_DIM_MMHG^MDC|||||ROBX|4| NM|150022^MDC_PRESS_BLD_NONINV_DIA^MDC|1.6.1.1|80|266016^MDC_DIM_MMHG^MDC|||||ROBX|5|NM|150023^MDC_PRESS_BLD_NONINV_MEAN^MDC|1.6.1.1|100|266016|MDC_DIM_MMH ||ROBX|6|NM|150037^MDC_PRESS_BLD_ART_ABP_SYS^MDC|1.6.1.1|126|266016^MDC_DIM_MMHG^MDC|||||ROBX|7|NM|150038^MDC_PRESS_BLD_ART_ABP_DIA^MDC|1.6.1.1|76|266016^ MDC_DIM_MMHG^MDC|||||ROBX|8|NM|150039^MDC_PRESS_BLD_ART_ABP_MEAN^MDC|1.6.1.1|92|266016^MDC_DIM_MMHG^MDC|||||ROBX|9|NM|151728^MDC_AWAY_CO2_ET^MDC|1.6。 1.1|60|266016^MDC_DIM_MMHG^MDC|||||ROBX|10|NM|151562^MDC_RESP_RATE^MDC|1.6.1.1|60|264928^MDC_DIM_RESP_PER_MIN^MDC|||||R||||||| || OBX|11|NM|150364^MDC_TEMP_BODY^MDC|1.0.0.9|37|268192^MDC_DIM_DEGC^MDC|||||ROBX|12|NM|150364^MDC_EEG_BISPECTRAL_INDEX^MDC|1.0.0.9|37|262656^MDC_DIM_DIMLESS^ MDC|||||R

public void onCreate() {
超级.onCreate();
serverThread = new Thread(new Runnable() { 公共无效运行() { 尝试{ Looper.prepare(); 套接字 = 新服务器套接字(8080); socket.setReuseAddress(true); socket.setPerformancePreferences(100, 100, 1);

                while (!stop){
                  Socket accept = socket.accept();
                  accept.setPerformancePreferences(10, 100, 1);
                  accept.setKeepAlive(true);

                      try
                        {             

/这里我收到了 16 行的消息/ /每一行都以 \n 结尾,以区分受体中的片段/

                          in = new BufferedReader(new InputStreamReader(accept.getInputStream())); 

                          int cont=0;
                          for (cont=0;cont<16;cont++){
                              if (cont==0){
                                   aux = in.readLine();
                                   aux=aux.substring(1);
                                   if (aux.contains(inicio)){
                                      hl7Message=aux+separator2;
                                   }
                                   else{
                                       Log.v("Fail", "Error, the received data does not " +"follow the HL7 protocol");
                                       break;  

                                       }
                                   }

                            hl7Message+=in.readLine()+separator2;

                            }

                         }catch (IOException e2){
                              e2.printStackTrace();
                          }

/我用整个消息调用解析器/

                        hl7Parser(hl7Message);

                }
             } catch (Throwable e){
                e.printStackTrace();
                Log.e(getClass().getSimpleName(), "Error in Listener",e);
                }

            try
            {   
             socket.close();
            }
            catch (IOException e)
            {
            Log.e(getClass().getSimpleName(), "keep it simple");
             }
           }
         },"Server thread");
       serverThread.start();
      }

/我在这里解析消息,首先我用 \n 分隔每一行,我有:MSH、PID、PV1、OBR 和 OBX(从 1 到 13)/

public void hl7Parser(String hl7Message){

        String[]  fieldsOfMessage= null;
        fieldsOfMessage=hl7Message.split(separator2);

        MSH=fieldsOfMessage[0];
        PID=fieldsOfMessage[1];       
        PV1=fieldsOfMessage[2];
        OBR=fieldsOfMessage[3];

        for (int x=4; x<16;x++){
            OBX+=fieldsOfMessage[x];

        }      

/这里我得到了第一个段的索引,以便能够在段内搜索所需的字段/

        int[] indice;

        //MSH SEGMENT
        indice=get_indice(MSH);

/这些是所需的字段/

        String sending_application, sending_facility, receiving_application, 
        receiving_facility, date, message_type, 
        message_control_id, processing_ID, version, sequence_number, 
        accept_ack_type, app_ack_type, country_code, principle_language, message_profile_id;


        sending_application=MSH.substring(indice[1]+1,indice[2]);

        sending_facility=MSH.substring(indice[2]+1,indice[3]);

        receiving_application=MSH.substring(indice[3]+1,indice[4]);


        receiving_facility=MSH.substring(indice[4]+1,indice[5]);


        date=MSH.substring(indice[5]+1,indice[6]);


        message_type=MSH.substring(indice[7]+1,indice[8]);

        int tr=message_type.indexOf("^");
        String type=message_type.substring(tr+1);

        message_control_id=MSH.substring(indice[8]+1,indice[9]);


        processing_ID=MSH.substring(indice[9]+1,indice[10]);


        version=MSH.substring(indice[10]+1,indice[11]);


        message_profile_id=MSH.substring(indice[19]+1);


        Date now = new Date();
        String standard_date = new SimpleDateFormat("yyyyMMddHHmmss.SSSZ").format(now);

/我在 OBX 字段得到 nullOBX... 而不是 OBX.. 之前得到了错误。/

【问题讨论】:

  • 向我们展示通过 TCP/IP 接收到的确切二进制消息的十六进制转储以及“接收器”中消息解析代码的相关部分
  • 感谢您的回答@xmojmr!我已经复制了解析器的相关部分,但是“向我们展示确切二进制消息的十六进制转储”是什么意思?
  • (1) hex-dump 我的意思是类似于this question,流开始解释它之前的原始数据和切片等。这样我们就可以检查消息已正确传递。 HL7 v2.x 是 binary 协议 (2) 在您的代码中打印null 的位置到底在哪里? (3) 尝试对代码块进行一些格式化,以便语法高亮显示能够赶上并帮助我们阅读您的代码 (stackoverflow.com/help/formatting)
  • 酷@xmojmr,但我怎样才能得到十六进制转储,用wireshark或类似的东西?
  • 好问题。显示设备收到的内容就足够了。您可以使用类似于此处使用的HexDump 的内容:code.google.com/r/naranjomanuel-opensource-broadcom-ble/source/…

标签: testing standards hl7 hapi


【解决方案1】:

这是消息中的一个问题,我缺少与遏制相关的前三个参数:

OBX|1||69965^MDC_DEV_MON_PHYSIO_MULTI_PARAM_MDS^MDC|1.0.0.0|||||||X OBX|2||69966^MDC_DEV_MON_PHYSIO_MULTI_PARAM_VMD^MDC|1.1.0.0|||||||X OBX|3||69967^MDC_DEV_MON_PHYSIO_MULTI_PARAM_CHAN^MDC|1.1.1.0|||||||X

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 2017-07-13
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多