【问题标题】:Mirth - iterate over insurance HL7 segmentsMirth - 迭代保险 HL7 段
【发布时间】:2022-06-29 00:43:36
【问题描述】:

在 Mirth 中使用 ADT 消息模板,遇到 IN1 和 IN2 段问题,特别是 IN2。 这是我正在使用的示例消息,几乎删除了所有段。 MSH|^~&|EPIC|AMB||99|20220403165344|RELEASEAUTO|ADT^A04|367476|T|2.5|||AL|NE IN1|1|10500201|105^Test|BCBS NC BLUE CARE^Test1|邮政信箱 35^^DURHAM^NC^27702^|| IN2||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||第一次迭代 IN1-62|| IN1|1|10500201|106^Test|BCBS NC BLUE CARE^Test1|邮政信箱 35^^DURHAM^NC^27702^|| IN2||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||第二次迭代 IN1-62||

到目前为止,我已经构建了以下内容来迭代 IN1 段:

//IN1 Segments
var IN1count=0;
for each (seg in msg.IN1) {
    createSegment('IN1',output,IN1count);
    output.IN1[IN1count]['IN1.2'] = seg['IN1.2'];
    output.IN1[IN1count]['IN1.3'] = seg['IN1.3'];
    output.IN1[IN1count]['IN1.4'] = seg['IN1.4'];
    output.IN1[IN1count]['IN1.8'] = seg['IN1.8'];
    output.IN1[IN1count]['IN1.9'] = seg['IN1.9'];
    output.IN1[IN1count]['IN1.10'] = seg['IN1.10'];
    output.IN1[IN1count]['IN1.12'] = seg['IN1.12'];
    output.IN1[IN1count]['IN1.13'] = seg['IN1.13'];
    output.IN1[IN1count]['IN1.22'] = seg['IN1.22'];
    output.IN1[IN1count]['IN1.36'] = seg['IN1.36'];
    IN1count++;
    }

我正在努力在出站上正确映射 IN2 段,我已经阅读了有关 getSegmentsAfter 但我无法在线找到该功能...如何编写正确的 JS 代码来查找是否给定的 IN1后面有 IN2,特别是如果有 IN2-61,然后才创建 IN2 段?

希望这是有道理的:)

【问题讨论】:

    标签: mirth


    【解决方案1】:
    1. 您将在此处找到 createSegmentAfter 的代码;它是在你的转换器之前插入的 JavaScript:https://github.com/nextgenhealthcare/connect/blob/2f3740db44c8d42aa6fafffd991b9c1fde940ea0/server/src/com/mirth/connect/server/builders/JavaScriptBuilder.java

    2. 跟踪您是否刚刚传递了 IN1 的一种方法是使用以下内容遍历所有段:

       var was_in1 = false;
       var last_in1;
       for each ( seg in msg.children() ){
        if (was_in1) {
         if (seg.name() == "IN2") {
          // existing IN2 follows IN1
         } else {
          // insert new IN2
        }
        if (seg.name() == "IN1") {
          was_in1 = true;
          last_in1 = seg;
        } else {
          was_in1 = false;
        }
      

      }

    【讨论】:

      【解决方案2】:

      如果有消息的“nextSibling()”方法会很好,但没有。幸运的是,我们可以通过以下方式模拟它:

      1. 获取当前对象的childIndex
      2. 从当前对象的父对象获取所有子对象
      3. 使用索引childIndex + 1访问下一个孩子

      看起来像这样:

      for each (seg in msg.IN1) {
          // Do your IN1 stuff ...
      
          var nextSeg = seg.parent().children()[ seg.childIndex() + 1];
          if(nextSeg != null && nextSeg.name() == 'IN2' && nextSeg['IN2-61'].toString() != '') {
              // Do yourIN2 stuff ...
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-21
        • 2015-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-23
        • 1970-01-01
        相关资源
        最近更新 更多