第六課-Channel Study For TCP Listener & HTTP Listener & Web Service Listener About Response Handler
经过前面章节的课程,对Mirth Connect在系统集成与数据交互中的使用有了一个大概的了解;大家一定有个疑惑,Mirth Connect如何组织响应消息并返回给调用者?今天我们就来继续深入讲解Response响应处理机制。
C#示例:
本课程我们将通过C#编程语言调用Mirth Connect接口服务来讲述,C#示例截图如下:

C#测试客户端

C#版本Webservice接口服务
TCP Listener 信道示例:

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

设置源端TCP Listener参数

设置目的端Channel Writer参数

设置源端转换规则

源端新建JS转换步骤,在‘输入消息模板’录入如下HL7消息模板并添加如下js脚本
MSH|^~\&|SMS|IAH|CERNER|PATHNT|200201291848||ADT^A01|CHPFADIT|P|2.3|||AL|NE|
EVN|A01|200201291848|||REJKB1
PID||53820452|00664524|220675537|AHMED^AYALNE^^^^||19781218|M||E|5718 SEMINARY RD #B5^^FALLS CHURCH^VA^22041||(703)379-8374|||||0053820452|220675537||
PV1||I|2324^2302^-B ||||1111111^PINA|||MED|||||||1111111^PINA|S||S|P||||||||||||||||||IAH|||||200201291848|
PV2|||^SEIZURE, FEVER, RLQ PAIN
var dbConn;
try {
var pid=msg['PID']['PID.2']['PID.2.1'].toString();
var name=msg['PID']['PID.5']['PID.5.2'].toString();
var sex=msg['PID']['PID.8']['PID.8.1'].toString();
var dob=msg['PID']['PID.7']['PID.7.1'].toString();
var addr=msg['PID']['PID.11']['PID.11.3'].toString();
var ssn=msg['PID']['PID.19']['PID.19.1'].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();
}
}

目的端响应转换规则

在‘输出消息模板’中录入如下xml格式模板并添加如下js脚本
<patient>
<pid></pid>
<ret></ret>
</patient>
tmp['pid']=$('pid');
tmp['ret']=$('Ret');

运行C#版TCP Sender,进行如上测试,成功获取响应,验证Mirth Connect 的TCP Listener信道OK!
HTTP Listener 信道示例:

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

设置源端HTTP Listener参数

设置源端转换规则;源端新建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();
}
}

设置目的端Channel Writer参数

目的端响应转换规则;在‘输出消息模板’中录入如下xml格式模板并添加如下js脚本
<patient>
<pid></pid>
<ret></ret>
</patient>
tmp['pid']=$('pid');
tmp['ret']=$('Ret');

运行C#版HTTP Sender,进行如上测试,成功获取响应,验证Mirth Connect 的HTTP Listener信道OK!
Web Service Listener 信道示例:

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

设置源端Web Service Listener参数

设置源端转换规则;源端新建Mapper映射转换步骤,在‘输入消息模板’录入如下XML消息模板
<patient>
<pid></pid>
<ret></ret>
</patient>

设置目的端Channel Writer参数

目的端转换规则;在‘输出消息模板’中录入如下xml格式模板并添加如下js脚本
<?xml version="1.0" encoding="utf-8" ?><patient><reason></reason><info><pid>103</pid><name>Amarnath Zhao</name><sex>M</sex><dob>19910518</dob><addr>臺灣'<&>"台中</addr><ssn>886</ssn><status>0</status></info></patient>
var dbConn;
try {
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)
{
tmp['reason']='不存在!';
tmp['info']['pid']='';
tmp['info']['name']='';
tmp['info']['sex']='';
tmp['info']['dob']='';
tmp['info']['addr']='';
tmp['info']['ssn']='';
tmp['info']['status']='';
channelMap.put('Ret','0');
}else{
var result1=dbConn.executeCachedQuery("select * from patient WHERE pid = "+$('pid'));
result1.next();
tmp['reason']='存在.';
tmp['info']['pid']=result1.getString(1);
tmp['info']['name']=result1.getString(2);
tmp['info']['sex']=result1.getString(3);
tmp['info']['dob']=result1.getString(4);
tmp['info']['addr']=result1.getString(5);
tmp['info']['ssn']=result1.getString(6);
tmp['info']['status']=result1.getString(7);
result1.close();
channelMap.put('Ret','1');
}
result.close();
} finally {
if (dbConn) {
dbConn.close();
}
}
channelMap.put('patinfo',tmp);

目的端响应转换规则;在‘输出消息模板’中录入如下xml格式模板并添加如下js脚本
<xml>
<ret></ret>
<pat></pat>
</xml>
tmp['ret']=$('Ret');
tmp['pat']=$('patinfo');

运行C#版Web Service Sender,进行如上测试,成功获取响应,验证Mirth Connect 的Web Service Listener信道OK!
本课知识点总结:
1.TCP\HTTP\Web Service三种Listener的响应消息处理
2.Response均以目的端作为响应
3.数据库JS查询与插入编程
本课扩展思考:
请在目的端响应转换中写如下JS脚本responseMap.put('responseAck', ack.toString() );然后在源端Response参数指定此作为响应。
第六課-Channel Study For TCP Listener & HTTP Listener & Web Service Listener About Response Handler的更多相关文章
- 自顶向下深入分析Netty(六)--Channel总述
自顶向下深入分析Netty(六)--Channel总述 自顶向下深入分析Netty(六)--Channel源码实现 6.1 总述 6.1.1 Channel JDK中的Channel是通讯的载体,而N ...
- Netty 源码解析(六): Channel 的 register 操作
原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 今天是猿灯塔“365篇原创计划”第六篇. 接下来的时间灯塔君持续更新Netty系列一共九篇 Netty 源码解析(一 ):开始 Netty ...
- Beaglebone Black– 智能家居控制系统 LAS - 网页服务器 Node.js 、Web Service、页面 和 TCP 请求转 UDP 发送
上一篇,纯粹玩 ESP8266,写入了 init.lua 能收发 UDP.这次拿 BBB 开刀,用 BBB host 一个 web server ,用于与用户交互,数据来自 ESP8266 的 UDP ...
- Web中Listener的创建
使用Listener只需要两个步骤: 定义Listener实现类. 通过Annotation或在web.xml文件中配置Listener 实现Listener类 监听不同Web事件的监听器不相同,常用 ...
- 测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
Remoting和Web Service是.net中的重要技术,都可用来实现分布式系统开发,如果是不同的平台就只能选择Web Service,但如果是同一平台,就都可以选择了.到底选择那种,当然还有访 ...
- web service,soap ,http,tcp,udp
webservice and soap HTTP只负责把数据传送过去,不会管这个数据是XML.HTML.图片.文本文件或者别的什么.而SOAP协议则定义了怎么把一个对象变成XML文本,在远程如何调用 ...
- .NET Remoting三种信道Http,Tcp,IPC和Web Service的访问速度比较(转)
Remoting和Web Service是.net中的重要技术,都可用来实现分布式系统开发,如果是不同的平台就只能选择Web Service,但如果是同一平台,就都可以选择了.到底选择那种,当然还有访 ...
- web.xml listener配置
listener简介: <listener>能为web应用创建监视器,监听上下文的各种事件,如:application和session事件,这些监视器都是按相同的方式定义,它的功能取决于各 ...
- SpringBoot系列教程web篇Listener四种注册姿势
java web三要素Filter, Servlet前面分别进行了介绍,接下来我们看一下Listener的相关知识点,本篇博文主要内容为SpringBoot环境下,如何自定义Listener并注册到s ...
- 转:Java NIO系列教程(六) File Channel
Java NIO中的FileChannel是一个连接到文件的通道.可以通过文件通道读写文件. FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下. 打开FileChannel 在使用F ...
随机推荐
- win10 有 休眠 功能,将内存保存到文件,开机10秒左右,恢复之前idea等所有软件
休眠 休眠 休眠 重要的事情说三遍. 提示,默认不显示,需要控制面板 电源里面设置下.
- 开源K线图辅助线编辑工具模块
基本就像使用photoshop一样,同一DC上应用叠加图像. 辅助线模块,提供浮动工具条,以及两层Layer,附加在DC上,交互处理DC对应窗口区域的鼠标事件,时间轴价格轴与x轴y轴坐标转换. XW全 ...
- 浅谈React与SolidJS对于JSX的应用
React将JSX这一概念深入人心.但,并非只有React利用了JSX,VUE.SolidJS等JS库或者框架都使用了JSX这一概念.网上已经有大量关于JSX的概念与形式的讲述文章,不在本文的讨论范围 ...
- 专访|3DCAT如何赋能Matterverse打造3A游戏画面的Sandbox
元宇宙概念自20世纪90年代创造,在21世纪经历20年快速塑形,终于在2021年进入元年,元宇宙概念爆发,受到政府.机构.企业以及网民的高度关注,资本市场一度高涨,相关投资赛道大热. 元宇宙第一股Ro ...
- x5开源库后续知识点
目录介绍 01.基础使用目录介绍 1.0.1 常用的基础介绍 1.0.2 Android调用Js 1.0.3 Js调用Android 1.0.4 WebView.loadUrl(url)流程 1.0. ...
- Cesium渲染模块之FBO与RBO
1. 引言 Cesium是一款三维地球和地图可视化开源JavaScript库,使用WebGL来进行硬件加速图形,使用时不需要任何插件支持,基于Apache2.0许可的开源程序,可以免费用于商业和非商业 ...
- BWO白鲸优化算法
白鲸算法 白鲸算法(BWO)是一种新的元启发式算法,是一种基于群体的算法,其灵感来自于白鲸的行为,包括游泳,猎物和鲸落.在BWO的数学模型中构建了勘探,开发和鲸落阶段,并在开发阶段利用Levy飞行 ...
- [MAUI]模仿哔哩哔哩的一键三连
@ 目录 创建弧形进度条 绘制弧 准备物料 创建气泡 创建手势 创建交互与动效 项目地址 哔哩哔哩(Bilibili)中用户可以通过长按点赞键同时完成点赞.投币.收藏对UP主表示支持,后UP主多用&q ...
- 技嘉主板开启VT
AM4接口主板开启虚拟化: M.I.T.->Advanced Frequency Settings->Advanced CPU Core Settings->SVM Mode (虚拟 ...
- 基于proteus的4019的移位设计
基于proteus的4019的移位设计 1.实验原理 4019是一个基于CMOS的数字集成芯片,具有数据选择和逻辑门或两种工作状态.这里利用数据选择的切换,实现数据的左移和右移操作.简而言之就是左移使 ...