gpt4 book ai didi

mirth - 设置 Mirth 目标以将转换数据作为自定义 ACK 发送回

转载 作者:行者123 更新时间:2023-12-04 04:17:06 24 4
gpt4 key购买 nike

我有一个设置为 Web 服务监听器的 Mirth channel ,它接收一个 ID,构建一个 HL7 查询消息并发送此查询并最终返回一个 HL7 响应。

  • channel 名称:QueryChanel
  • 源连接器类型:Web 服务监听器
  • 目标连接器名称:QueryToVista
  • 目标连接器类型:LLP 发件人。

  • 这是我从查询中收到的典型 HL7 响应如下:
    MSH|~|\&|VAFC RECV|FACILITY|VAFC TRIGGER||20121011141136-0800||ADR~A19|58269|D|2.4|||NE|NE|USA
    MSA|AA|1234|
    QRD|20121011051137|R|I|500000001|||1^ICN|***500000001***|ICN|NI|
    EVN|A1|20121004064809-0800||A1|0^^^^^^^^USVHA\\0363^L^^^NI^TEST FACILITY ID\050\L|20121004064809-0800|050
    PID|1|500000001V075322|500000001V075322^^^USVHA\\0363^NI^VA FACILITY ID\050\L~123123123^^^USSSA\\0363^SS^TEST FACILITY ID\050\L~9^^^USVHA\\0363^PI^VA FACILITY ID\050\L||JOHN^DOE^^^^^L|""|19800502|M||""|""^""^""^""^""^^P^""^""~^^""^""^^^N|""|""|""||S|""||123123123|||""|""||||||""||
    PD1|||SOFTWARE SERVICE^D^050
    ZPD|1||||||||||||||||""

    如果我将 Source's Response From 参数设置为 ,我可以让上述所有内容返回。 QueryToVista

    但是,我只想返回值 500000001 从上面的消息。我试图在 QueryChanel 目标中使用转换器但没有成功。

    更新:

    我尝试在同一 channel 中的 QueryToVista 连接器之后添加一个 javascriptwriter 连接器,如下所示:
       var destination = responseMap.get('QueryToVista');
    var responseMessage = destination.getMessage();

    //Fails with following error: TypeError: Cannot read property "QRD.4" from undefined
    var customack = ResponseFactory.getSuccessResponse(responseMessage['QRD']['QRD.4'] ['QRD.4.1'].toString())**


    //work but send the whole HL7 message
    var customack = ResponseFactory.getSuccessResponse(responseMessage.toString())**


    responseMap.put('Barcode', customack);

    我似乎根本无法使用正常转换来检索元素。
    谢谢你。

    最佳答案

    您走在正确的轨道上,但您的更新说明了几个问题。但是,您使用两个目的地的基本方法是有效的,只要在“摘要”选项卡上选中“同步 channel ”即可。

    第 1 期

    在您的示例中,您要解析的 HL7 响应采用管道分隔的 HL7 形式。为了使用 E4X 符号访问元素(例如 responseMessage['QRD']['QRD.4']['QRD.4.1']),您必须首先将其转换为 E4X XML 对象。这可以分两步完成。

  • 将管道分隔的 HL7 字符串转换为 XML 字符串。
  • 将 XML 字符串转换为 E4X XML 对象

  • 在 JavaScript Writer 的 Javascript 转换器中(不是 Javascript Writer 脚本本身)
    var response = responseMap.get("QueryToVista");
    var responseStatus = response.getStatus();

    // Get's the pipe delimited HL7 string
    var responseMessageString = response.getMessage();

    if (responseStatus == "SUCCESS")
    {
    // converts the pipe delimited HL7 string into an XML string
    // note: the SerializeFactory object is available for use in transformer
    // scripts, but not in the Javascript destination script itself
    var responseMessageXMLString = SerializerFactory.getHL7Serializer(false,false,true).toXML(responseMessageString);

    // convert the XML string into an E4X XML object
    var responseMessageXMLE4X = new XML(responseMessageXMLString);

    // grab the value you want
    var ack_msg = responseMessageXMLE4X['QRD']['QRD.4']['QRD.4.1'].toString();

    channelMap.put('ack_msg', ack_msg)
    }
    else
    {
    // responseStatus probably == "FAILURE" but I'm not sure of the full range of possibilities
    // take whatever failure action you feel is appropriate
    }

    编辑**

    我不相信有问题 2。在查看您自己的方法后,我又玩了一点,相信我已经确认您的方法对于生成 SOAP 响应确实是正确的。我正在编辑此部分以反射(reflect)仍然有效的更简单的代码。

    在 Javascript Writer 脚本中
    var barcode = channelMap.get('ack_msg');
    var mirthResponse = ResponseFactory.getSuccessResponse(barcode);
    responseMap.put('Barcode', mirthResponse);

    关于mirth - 设置 Mirth 目标以将转换数据作为自定义 ACK 发送回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12920099/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com