我正在为一家小型药房服务提供商做一些咨询工作,该提供商需要一个HL7接口引擎设置,以便为在LAMP堆栈上运行的产品提供接口.
更具体地说,我正在寻找的是一个HL7引擎,它运行在*NIX上,可以将HL7 v2.X消息中的数据插入到MySQL数据库中.插入的数据将是从任意字段中取出的数据,因此需要进行解析.
我尝试使用Mirth,但它能够使任何看似简单的任务变得过于复杂,而且客户端界面/响应时间的极端缓慢使我们对此非常害羞.当我陈述一个简单的任务时,我的意思是发送一个基于一些规则的自定义ACK消息迫使我写出100行javascript,之后仍然会得到可怕的响应时间.
我喜欢Iguana并希望使用它,但是他们在单个服务器上为它的单个实例引用了12,000到15,000美元.这是一个很好的软件,但不能很好地证明这样的价格标签,以及这远远超出了我的客户愿意支付的单个软件支付他们业务的一小部分.
有没有人对满足这些需求的开源和/或专有软件有任何建议?
我正在尝试学习一些Mirth代码.我不断在不同频道的变压器中看到这样的事情:
msg['PRB']['PRB.4']['PRB.4.2'].toString()
Run Code Online (Sandbox Code Playgroud)
我知道这是解析HL7消息,我知道msg可能意味着消息.但这是MSG一个系统范围的变量吗?每个频道都有msg变量吗?范围是msg什么?我也一直在看${message.encodedData}模板中的内容.某些连接器类型是否自动发送内容msg?
我正在尝试使用代码模板在 Mirth Connect 中创建一个函数库。使用起来logger.debug很痛苦。我尝试将代码复制到虚拟 HTML 页面并使用浏览器的调试工具。不幸的是,Mirth 中的 JavaScript 引擎与浏览器中的 JavaScript 引擎不同,并且 Mirth Javascript 使用了几种已弃用的语法。
如何在 Mirth Connect 中调试或单步调试 Javascript 代码?
这看起来应该是一件简单的事情。我希望能够信任来自 Mirth 所依赖的服务的证书,而无需修改全局 Java 证书存储(或为 SSL 插件的每个实例删除一些大的证书)。我尝试过以下方法:
按键工具命令:
keytool -genkey -keystore appdata\my.jks -storetype PKCS12 -keyalg RSA -keysize 2048 -storepass xxxxxxxx
keytool -importcert -alias my-ca-cert -file myCaCert.pem -keystore appdata\my.jks -trustcacerts -storepass xxxxxxxx
keytool -importcert -alias my-server-cert -file myServerCert.pem -keystore appdata\my.jks -trustcacerts -storepass xxxxxxxx
Run Code Online (Sandbox Code Playgroud)
欢乐属性:
keystore.path = ${dir.appdata}/my.jks
keystore.storepass = xxxxxxxx
keystore.keypass = xxxxxxxx
keystore.type = pkcs12
Run Code Online (Sandbox Code Playgroud)
在这种情况下,欢乐完全无法启动。日志中的第一个错误是
java.io.IOException: Invalid keystore format
at com.sun.crypto.provider.JceKeyStore.engineLoad(JceKeyStore.java:724)
at java.security.KeyStore.load(Unknown Source)
at com.mirth.connect.server.MirthWebServer.createSSLConnector(MirthWebServer.java:370)
at com.mirth.connect.server.MirthWebServer.<init>(MirthWebServer.java:150)
at com.mirth.connect.server.Mirth.startWebServer(Mirth.java:385)
at com.mirth.connect.server.Mirth.startup(Mirth.java:265)
at com.mirth.connect.server.Mirth.run(Mirth.java:154)
Run Code Online (Sandbox Code Playgroud)
按键工具命令: …
考虑这个问题:
在非浏览器使用场景(Javascript HL7集成引擎)中使用Javascript/E4X,有一个变量包含一个可能有多个重复节点的XML片段.
<pets>
<pet type="dog">Barney</pet>
<pet type="cat">Socks</pet>
</pets>
Run Code Online (Sandbox Code Playgroud)
问题:如何获取Javascript/E4X中宠物节点数量的计数?
编辑:澄清一下,这个问题应该围绕E4X(ECMAScript for XML).向没有这些信息的人回答道歉.我应该事先研究并发布这个信息.
我正在使用2.3版的 HAPI hapi-structures-v25库来解析 HL7v2 消息并将其转换为 FHIR 资源。在通过 TCP 侦听器使用 HAPI 接收和解析 HL7V2 消息时,我遇到了一个奇怪的问题。
确定消息的编码。以下是消息的前 50 个字符以供参考,尽管这可能不是问题所在:MSH|^~\&|test|DrJhonDoe|TEST|UNKNOWN|20210216190432||ADT^A01^ADT_A01|60b647d4-b5a5 -4fae-a928-d4a3849de3c8|T|2.5
奇怪的是,当我尝试在 main 函数中将此消息作为字符串发送时,我没有收到此错误。仅当我通过 TCP/IP 将数据接收到我的 Java 函数时才会收到此错误。我尝试使用 Mirth 以及外部工具将 HL7 消息发送到我的接收 TCP 端口,结果相同。
这是我尝试处理的 HL7v2 消息示例
MSH|^~\\&|test|Dr.JhonDoe|TEST|UNKNOWN|20210216190432.7||ADT^A01^ADT_A01|60b647d4b5a54faea928d4a3849de3c8|T|2.5
EVN||20210216|20210216|
Run Code Online (Sandbox Code Playgroud)
从 tcp/ip 接收数据时,我使用 UTF-8 字符集将字节转换为字符串。
InputStream in = connection.getInputStream();
OutputStream out = connection.getOutputStream();
receivedMessageSize = in.read(receivedByeBuffer);
String incomingHl7Message = new String(receivedByeBuffer, StandardCharsets.UTF_8);
Run Code Online (Sandbox Code Playgroud)
我正确地收到了消息。但不确定为什么会出现错误。
我正在使用Mirth Connect v2.0并且卡在一项任务上,将XML转换为HL7 v3.我已连接到Ms-Access数据库(医院系统在Access中),我已设置通道并在目标选项卡中将连接器类型设置为文件编写器.当我部署频道时,我可以看到日志文件中填充了XML格式的记录,现在我仍然坚持如何将XML消息转换/转换为HL7.有什么指针吗?
有没有人成功地连接了医疗实验室设备,如细胞计数器/ABG 仪器,以使用 ASTM 1381-02 或类似协议通过串行端口进行欢乐连接。我正在做一个小项目。我需要机器以 ASTM 格式将数据传输到文本文件/到数据库,我无法支付 30000 美元的商业支持。我需要一个低成本或开源的解决方案。
我原以为 MLLP 侦听器将停止使用,但它似乎可以与 TCP 一起使用,而且我必须使其完全用于串行通信。
其次,我尝试用 Java 编写 ASTM 串行数据接收器。但是控制字符如 ACK、STX、ETX、ETB 和其他分隔符在终端中是不可见的,无论是在 Win 7 cmd 还是 Netbeans/Eclipse 控制台中。让我在解析数据时无能为力。
任何帮助都将朝着正确的方向发展。
我从 Mirth 和 HL7 开始,尝试向远程服务器发送消息。我的MSH样子如下:
MSH|^~\&|EPIC|EPIC|IMG_SCHEDULE_APPT|REMOTE|20170328193318|PERSONNAME|ORM^O01|12345678|T|2.4||||||||||
Run Code Online (Sandbox Code Playgroud)
响应如下所示:
MSH|^~\&|IMG_SCHEDULE_APPT|REMOTE|EPIC|EPIC|20170328193318||ACK|12345678|T|2.4|
MSA|AA|||
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息ERROR: Message control Ids do not match.
据我了解,此错误意味着消息中返回的消息控制 IDACK不相同。
从我所看到的来看,该数字12345678是消息控制 ID,我在发送的消息以及返回的 ACK 中都看到了该数字。那么这里出了什么问题呢?谁有错?我还是远程方?
有谁知道我该如何解决或调试这个问题?
我正在使用 ca.uhn.hl7v2.util.Terser 创建 hl7 消息。对于 hl7 字段之一,我需要设置以下值“\home\one\two”。
HL7 消息类型为 MDM_T02(版本为 2.3.1)。因为如果我尝试使用“\”是 hl7 消息中的转义字符
public void methodOne() {
MDM_T02 mdmt02 = new MDM_T02();
Terser terser = new Terser(mdmt02);
terser.set("OBX-5-1", "\\\\usne-server\\Pathology\\Quantum");
}
Run Code Online (Sandbox Code Playgroud)
在 hl7 消息中,OBX-5-1 被打印为“\E\E\usne-server\E\Pathology\E\Quantum”。
有人可以帮我打印正确的消息吗?