第六課-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 ...
随机推荐
- vscode 切换主侧栏可见性 原Ctrl+B 我改为了 Alt+P
vscode 切换主侧栏可见性 原Ctrl+B 我改为了 Alt+P ctrl+b 总是想不起来
- Python 潮流周刊第 42 期(摘要)+ 赠书《流畅的Python》6本
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- 使用Servlet实现单文件上传
一位朋友最近在学习JavaWeb开发,开始学习单文件上传操作,他自己尝试着去网上看一些博客教程,能明白其中大概的思路, 还是让我和他说说,如何实现单文单件上传功能.我和他说了一下大致的思路与操作步骤, ...
- Cesium之原生控件
1. 控件概述 Cesium的开始,基本上是从new一个Viewer开始 // ... <div id="cesiumContainer"></div> & ...
- Ubuntu安装OpenOffice
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/quantum7/article/det ...
- Win10下安装Java JDK 1.8 配置环境变量
1.下载地址:https://www.oracle.com/java/technologies/javase-downloads.html 2.双击运行,下一步.下一步-- 3.新建变量名:JAVA_ ...
- 英语文档阅读学习系列之Zynq-7000 EPP Software Developers Guide
阅读ug821-zynq-7000-swdev记录 1.略看目录Table 依旧采用总说加解释的模式,这种方式易于查找,是可靠的框架.目录词条依次为: Introduction Software Ap ...
- Java 中的异常处理机制的简单原理和应用。
Java 中的异常处理机制的简单原理和应用. 异常是指 java 程序运行时(非编译)所发生的非正常情况或错误. Java 对异常进行了分类,不同类型的异常分别用不同的 Java 类表示,所有异常的根 ...
- 简单的Git/GitHub
什么是Git/GitHub Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 版本控制(Revision control)是一种在开发的过程中用于管理我们对文件.目录或工 ...
- #凸包,闵可夫斯基和#CF87E Mogohu-Rea Idol
题目 按逆时针顺序给出三个凸包点集 \(\mathbb{A,B,C}\),每次查询给出点 \(D\), 问是否存在点 \(A\in\mathbb{A},B\in\mathbb{B},C\in\math ...