装置经理。 将MIS扩展到设备

装置经理。 将MIS扩展到设备
自动化医疗中心使用许多不同的设备,其操作必须由医疗信息系统(MIS)控制,以及不接受命令但必须将其工作结果传输到 MIS 的设备。 然而,所有设备都有不同的连接选项(USB、RS-232、以太网等)以及与其交互的方式。 在MIS中支持所有这些几乎是不可能的,因此开发了DeviceManager(DM)软件层,它为MIS提供了一个单一的接口,用于向设备分配任务并获取结果。

装置经理。 将MIS扩展到设备
为了提高系统的容错能力,DM 被划分为一组位于医疗中心计算机上的程序。 DM分为一个主程序和一组与特定设备交互并向MIS发送数据的插件。 下图显示了与DeviceManager、MIS和设备交互的一般结构。

装置经理。 将MIS扩展到设备
MIS 和 DeviceManager 之间的交互结构显示了 3 个插件选项:

  1. 该插件不会从 MIS 接收任何数据,而是从设备发送转换为它可以理解的格式的数据(对应于上图中的设备类型 3)。
  2. 该插件从 MIS 接收一个短(就执行时间而言)任务,例如在打印机上打印或扫描图像,执行它并发送结果以响应请求(对应于上图中的设备类型 1) )。
  3. 该插件从MIS接收长期任务,例如进行调查或衡量指标,并作为响应发送任务接受状态(如果请求中有错误,则任务可能会被拒绝)。 完成任务后,将结果转换为MIS可以理解的格式,并上传到与其类型对应的接口(对应上图中的设备类型2)。

主 DM 程序启动、初始化、在意外停止(崩溃)时重新启动,并在关闭时终止所有插件。 每台计算机上的插件组成都不同;仅启动必要的插件,这些插件在设置中指定。

每个插件都是一个独立的程序,与主程序交互。 插件的这种定义允许更稳定的操作,因为所有插件实例和头在错误处理方面都是独立的(如果发生严重错误导致插件崩溃,那么这不会影响其他插件和头) 。 一个插件允许您使用一种类型的设备(通常是同一型号),而某些插件只能与一台设备交互,而其他插件则可以与多个设备交互。 要将同一类型的多个设备连接到一个 DM,请启动同一插件的多个实例。

装置经理。 将MIS扩展到设备
Qt 工具包被用来开发 DM,因为它允许我们在大多数情况下从特定的操作系统中抽象出来。 这使得支持基于 Windows、Linux 和 MacOS 的计算机以及 Raspberry 单板设备的工作成为可能。 开发插件时选择操作系统的唯一限制是特定设备的驱动程序和/或特殊软件的可用性。

根据我们创建的协议,插件和头部之间的交互通过一个持续活动的 QLocalSocket 进行,该 QLocalSocket 具有特定插件实例的名称。 双方通信协议的实现被设计为动态库,这使得其他公司可以在不完全暴露与头部交互的情况下开发一些插件。 本地套接字的内部逻辑允许头部使用连接中断信号立即了解跌倒情况。 当触发此类信号时,有问题的插件将重新启动,这使您可以更轻松地处理紧急情况。

决定基于HTTP协议构建MIS和DM之间的交互,因为MIS运行在Web服务器上,这使得使用该协议更容易发送和接收请求。 还可以根据响应代码区分使用设备设置或执行任务时可能出现的问题。

在接下来的文章中,将以几个诊断中心机房为例,考察DM和一些插件的运行情况。

来源: habr.com

添加评论