第七課-Channel Study For HTTP Listener & Web Service Sender Intercommunicates Response Handler

示例说明:

系统A发送XML格式患者信息到Mirth的Source端HTTP Listener,完成患者信息入库逻辑;然后Mirth的Destinations端Web Service Sender调用系统B开放的C#实现的Webservice接口服务完成患者信息的查询并把响应结果返回给最初调用者系统A。这个数据交互通讯过程涉及:系统A---->Mirth---->系统B---->Mirth---->系统A

多信道交互响应消息处理步骤:

NO~C~OWA(%Z4RCMO}N2QT`0[1]

新建信道并设置源端输入输出参数格式、目的端输入输出格式、响应输入输出参数格式

X4JB(S3B~M`{LJRBS$%FDEU[1]

设置源端HTTP Listener参数

I(%2[E9N)M@QP(HJ9A5A([4

设置源端转换规则;源端新建JS转换步骤,在‘输入消息模板’录入如下XML消息模板并添加如下js脚本完成患者信息入库逻辑

<patient>
<pid>110</pid>
<name>撰獲濟</name>
<sex>M</sex>
<dob>19650108</dob>
<addr>臺灣大學</addr>
<ssn>33661489</ssn>
<status>0</status>
</patient>

var dbConn;
try {
      var pid=msg['pid'].toString();
      var name=msg['name'].toString();
      var sex=msg['sex'].toString();
      var dob=msg['dob'].toString();
      var addr=msg['addr'].toString();
      var ssn=msg['ssn'].toString();
      channelMap.put('pid',pid);
     dbConn=DatabaseConnectionFactory.createDatabaseConnection('org.mariadb.jdbc.Driver', 'jdbc:mariadb://127.0.0.1:3306/mirthtestdb', 'root', '125353Ct');
      var result=dbConn.executeCachedQuery("select count(*) from  patient WHERE pid = "+pid);
     result.next();
      var icount = result.getInt(1);
      if(icount==0)
      {
         var expression = "INSERT INTO patient (pid,name,sex,dob,addr,ssn) VALUES (?,?,?,?,?,?)";
         var paramList=new Array(pid,name,sex,dob,addr,ssn);
        icount = dbConn.executeUpdate(expression, paramList);
        channelMap.put('Ret','1');
      }else{
          channelMap.put('Ret','0');
      }
      result.close();
} finally {
     if (dbConn) {
         dbConn.close();
     }
}

M}CM]EFFJ7{ZI_9[%XBA~~5[1]

设置目的端Web Service Sender参数

OAVBXUVDWCE3{R(2IM_AF50

输入C# Webservice接口响应消息作为响应‘输入参数模板’,对返回值映射到Response Map的自定义变量responseAck中

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <acceptMessageResponse xmlns="http://tempuri.org/">
       <acceptMessageResult>string</acceptMessageResult>
     </acceptMessageResponse>
   </soap:Body>
</soap:Envelope>

var mapping;

try {
     mapping = msg.*::['Body'].*::['acceptMessageResponse'].*::['acceptMessageResult'].toString();
} catch (e) {
     mapping = '';
}

responseMap.put('responseAck', validate(mapping, '', new Array()));

5YN9D`]8N{8TRCF5PO5(_X7

运行C#版HTTP Sender,进行如上测试,成功获取响应,验证Mirth Connect 的HTTP Listener源通道、Web Service Sender目标通道与C# Webservice接口服务双向交互通讯OK!

本节课知识点总结:

1.Mirth调用外部C#的Webservice接口并获取返回值

2.响应消息通过responseMap变量返回

3.响应消息Raw格式返回C#Webservice的原始格式返回值

posted @ 2021-01-24 19:22  潤沁網路大學  阅读(760)  评论(0)    收藏  举报
潤沁網路大學