资料介绍
描述
问题
患者想知道为什么他们必须重复医疗信息,以及为什么一旦记录在案他们就无法访问这些信息。
临床医生想知道为什么他们必须花时间重复输入相同的信息,以及为什么他们无法从其他医疗保健提供者甚至同一家医院的子系统访问患者的健康史。
来自https://www.iota.org/verticals/ehealth
传统上,医疗保健数据被孤立在不同的机构中,甚至在一个机构中。这些孤岛阻碍了有意义的数据共享和重用,并限制了可提供的护理质量。要接受治疗,一个人可能需要就一次事件咨询多个提供者。当个人从初级保健诊所转到医院再转到专科诊所并再次返回时,记录不会无缝共享,从而降低了他们的护理连续性。
尽管许多国家最近进行了政治冒险,但我们的数据在医疗保健专业人员之间的共享并不令人满意,基本医疗信息被多次复制。随着能够监测临床参数的消费设备数量急剧增加,孤岛的数量正在爆炸式增长。
该项目探讨了让患者完全拥有医疗信息的可能性,以及与相关医疗保健提供者共享这些信息的能力。它引入了分布式健康记录 (DHR) 的概念。这适用于使用 IOTA、Azure Sphere 和 openEHR 进行安全医疗家庭监控的示例。
我的背景
凭借在北欧国家开发主要电子医疗记录 (EHR) 系统 15 年的经验,我对医学期刊的复杂性和系统之间的互操作性有着第一手的经验。此外,我正在运用我在保护低功耗物联网设备方面的知识。
这是个人的
今年早些时候,我利用业余时间在低功耗微控制器上使用 LPWAN 技术对健康监测设备进行了原型设计。三月的一天,在工作时,我的心跳毫无征兆地停止了。在我被送往医院之前,我的同事为我进行了心肺复苏术并使用除颤器使我苏醒。
发现了一种遗传性疾病 LQTS,我最终得到了植入式心律转复除颤器 (ICD)。该设备是未来事件的保障,它还与向我当地医院报告遥测数据的基站进行通信。虽然这些技术已证明对健康有很大好处,但我对安全问题和数据可用性很感兴趣。
第一个问题让我想到了我是骑兵,并对我自己的原型的安全性提出了质疑。到目前为止,这将我带到了 Azure Sphere MT3620 及其安全重点。
医疗保健行业已采用计算机化的连接技术来更快地部署改进的医疗设备。当今市场上超过一半的医疗设备都在软件上运行:植入式;诊断机;监控设备。这些技术具有惊人的拯救生命、快速诊断和提高生活质量的能力,因此安全故障就是未能保护人类生命。
我还发现,我的 ICD 报告的数据最终在医院的一个单独的断开连接的子系统中,并且不能立即提供给其他医院、诊所、医院外的急诊室甚至同一医院内的其他病房。这意味着,如果我在度假期间最终进了急诊室,他们不太可能知道我的 ICD 前一天晚上是否报告了故障。在我国,患者可以登录国家门户网站并阅读健康记录。ICD 的数据不受此限制,我只能猜测,由于技术不兼容。
系统之间缺乏互操作性和健康数据的可用性是 IOTA 的用武之地,也是这个概念验证的主要关注点。
建筑学
我不相信有人可以将 IOTA 种子和多个密码的管理留给各种患者。89 岁的 Maud 因头晕去看医生时不会背诵她的 81 个字符的 IOTA 种子或高安全密码。我提出的解决方案是将 IOTA 中患者拥有的医疗数据与已经在许多国家实施的国家患者门户整合。您会信任该方创建和维护您的医疗钱包,并且您会允许或拒绝医疗保健从业者在需要时访问它。对于喜欢冒险的人,可以在门户中访问种子。此外,存储在 Tangle 中的实际医疗数据将被加密。
技术
该项目是一个概念验证 (PoC),由以下部分组成:
- 带有Mikro Elektronika Mikroe 心率 4传感器的Azure Sphere 入门套件,能够感应患者的心率和血液氧化。
- 用于路由和显示遥测数据的Azure IoT Central应用程序。它还将设备与患者相关联,并定义触发操作的规则。
- 一个无服务器的Azure Functions ,用于组合openEHR观察并将测量值分配给正确的患者钱包/分布式健康记录。
- 与IOTA Tangle 的集成。
它旨在用于监测患者:
- 在家自行管理
- 在家庭护理的监督下
- 在疗养院自我管理或监督
- 自我管理或在医院和诊所的监督下
先决条件
- 代表患者的两个或多个 IOTA 种子。我建议在电脑和手机上安装Trinity 钱包来验证结果。我们将使用devnet ,尽管由于缺少价值交易,这对 PoC 来说并不重要。
- 免费的Azure IoT Central帐户。
- 用于创建 Azure Functions的免费Azure帐户。这可以被任何网络服务器技术/托管所取代,但示例代码基于 dotnet core 2.1。
- 视觉工作室 2017/2019。
- 用于开发设备应用程序的Azure Sphere SDK 。
- GIT用于下载源代码。
- 用于配置 MT3620 的azsphere命令行实用程序。
可选,但强烈推荐
- 用于监视消息的IoT Central Explorer 工具。
- RequestBin用于临时捕获和诊断 http 请求。
- 用于手动生成 http 请求的邮递员。
- Ocean Health Systems 原型编辑器,用于探索openEHR数据结构。
传感器
对于此 PoC,我使用了一个传感器来通过血管系统的脉搏来估算心率 (HR)。它还可以读取血液中含氧量 (SpO2) 的饱和度。
监测 SpO2(院外)可用于解决肺部血液氧合不足的许多健康问题。它可以警告患有肺炎和慢性阻塞性肺病(哮喘、肺气肿)的患者健康状况恶化。这对囊性纤维化患者至关重要。它还可用于监测急性气道炎症,例如支气管炎、鼻炎、鼻窦炎,尤其是对于可能无法改变恶化状态的儿童和患者。
其他可随时用于此类院外监测的传感器及其用例包括:
- ECG/EKG - 检测 A-fib(心动过速)、v-fib、心动过缓(低心率)、早搏(心悸、LQTS)。
- 温度——发烧、生育/排卵、低代谢率、败血症(免疫系统受损的患者)。
- 压力垫 - 褥疮,痴呆症患者的运动。
- 血糖 - 糖尿病
- 血压 - 药物并发症、压力、心脏病。
代码
Azure Sphere 设备的代码基于一些示例作为起点。当按下按钮 B 时,它会读取传感器,并希望您将手指放在二极管上。传输此数据并同步一些设置。
Azure Sphere Starter Kit 的安装和首次注册有详细记录,并且在运行此应用程序之前是必需的。这将告诉您需要在 app_manifest.json 中配置什么以允许 IoT Central 上的设备。
将MT3620 用户指南放在手边。
我创建了一个新存储库,并从https://github.com/Azure/azure-sphere-samples存储库中复制了 AzureIoT 示例。这是创建 IoT Central 或 IoT 中心连接的应用程序的良好起点。
MikroE 点击心率 4
MikroE Click-boards 有一个广泛的库库。但是,它们与 Azure Sphere MT3620 的纯 C 语言环境不兼容。无赖。已经为 I2C 土壤湿度传感器移植了其中一个库后,我准备启动我的示波器并放上一大壶咖啡。
我订购了 MikroE Heart Rate 4 模块,因为我看过 James Flynn 的作品。示例代码无需修改即可运行,节省了大量时间。谢谢詹姆斯!阅读他的博客以了解更多信息。
然而,我发现截至 2019 年 9 月,使用模数转换 (ADC) 功能,就像大多数传感器所做的那样,合并这两个起点并不是直截了当的。一个问题是,要将 ADC 用于 I2C 通信,您需要以 Azure Sphere API 版本 2 Beta 为目标。在撰写本文时,这在项目属性下的“目标 API 集”下表示为“2+Beta1905”,但可能会发生变化。
以 Azure IoT Hub/Central 为起点更改 API 版本会导致各种编译错误。我修复了大部分但不是全部。使用 clickboard_demos 示例作为起点并合并 Azure IoT 库的依赖项确实有效。
另一个问题是 MT3620 的硬件定义。这两个示例针对不同的定义,具有不同的名称,并且 sample_hardware.json 和 app_manifest.json 需要一致。决定一个并深入研究引出线,无论如何你都需要掌握它。
MT3620 RDB 的示例硬件抽象
在 azure-sphere-samples\Hardware\mt3620_rdb\ 下找到文件 sample_hardware.json 并添加您需要的 GPIO。我加了
{"Name": "SAMPLE_HR4_INT", "Type": "Gpio", "Mapping": "MT3620_RDB_HEADER1_PIN8_GPIO", "Comment": "MT3620 RDB: GPIO2 is exposed on header 1 pin 8"}
访问心率的中断引脚 4. 我怎么知道要使用哪个 GPIO?我可以在 Click-board 上直观地看到哪个引脚被标记为 INT,也可以在产品页面上找到它。
MT3620用户指南在 Azure Sphere MT3620 初学者工具包的 Click 套接字 1 上说明了这对应的 GPIO 引脚。
该名称SAMPLE_HR4_INT
将在 app_manifest.json 中引用并解析为正确的 pin 地址。来自一个简单的 Arduino 世界,这感觉过于复杂和混乱。我让 10 岁的孩子在一个小时内用 Arduinos 脉冲 LED,这太抽象了。我希望 Microsoft 对此进行简化(仅表示引脚编号)或添加可视化工具。
如果您需要访问 INT 引脚以了解手指何时覆盖传感器,则为您的模块使用 Click 插座 1 或 2 并不重要。
与 I2C 通信共享同一总线,并且电线相互连接。I2C 总线已经定义好了,不用管了:
{"Name": "SAMPLE_LSM6DS3_I2C", "Type": "I2cMaster", "Mapping": "MT3620_RDB_HEADER4_ISU2_I2C", "Comment": "MT3620 RDB: Connect external LSM6DS3 to I2C using header 4, pin 6 (SDA) and pin 12 (SCL)"}
我邀请您进一步检查客户端应用程序或 HR4 示例以了解传感器的使用方式。不要担心计算测量值的算法。
Azure IoT Central 遥测
其余代码主要是关于将遥测数据同步和推送到 IoT Central。查看 azure-sphere-samples/Samples/AzureIoT 以获取独立示例。
Azure 物联网中心应用程序
我熟悉 Azure IoT Hub,所以我选择在这个项目中使用 IoT Central。底层机制大同小异,但您可以用很少的代码或不用代码实现很多。设置应用程序有详细记录,请按照本指南了解更多信息。
我的应用程序定义了一个具有以下功能的设备模板:
- 遥测心率和 SpO2。
- 设备心跳事件。
- 状态 LED(用于调试、检查连接)和 NPR Id 的设置。NPR Id 是我用来将读数分配给正确患者的 IOTA 钱包的国家患者标识符。当将设备分配给患者进行家庭监护时,操作员将使用此设置。对于在多个患者中使用,可以使用 NFC、Chirp 、条形码或类似物来激活正确的患者。
- 传感器版本和 NPR Id 的属性。
- 带有 webhook 的规则,用于触发 Azure Functions 以创建 IOTA 事务。
您可能会在“设置”和“属性”下注意到 NPR Id,稍后会详细介绍。
Azure IoT Central的深入指南。有关webhooks的更多信息。
我建议使用RequestBin来调试和探索 http 负载。请注意,您必须每 48 小时创建一个新地址。
为了监视从设备到 Azure IoT Central 的遥测,我使用了工具iotc-explorer 。
Azure 函数
Azure Functions 的目的是为全国患者门户提供服务并执行以下操作:
- 从有效负载遥测数据中提取 NPR Id(国家患者标识符)和设备标识符。
- 找到映射到患者的 IOTA 种子。这将是国家患者门户下的一个单独注册表,但在本 PoC 中为简洁起见进行了简化。
- 从传感器读数创建一个 openEHR 兼容的数据结构,观察。这将通过访问 openEHR 模板存储库来完成,但在本 PoC 中为简洁起见进行了简化。
- 代表患者为每个测量创建 IOTA 交易。
我花了很多时间尝试让该功能访问设备数字孪生模型,以获取定义为操作员设置的患者标识符。这是不可靠的,并且似乎搞砸了设备身份验证。我认为根本原因在于 Azure 函数和实例状态的性质。
我已经将所需的 ID、NPR Id 作为设置,但这不是触发 Webhook 时 IoT Central 发送的负载的一部分。
为了解决这个问题,我在 Azure IoT Central 的模板中添加了一个相同的属性。设备只是将 NPR Id 属性与设置中的值同步。规则中定义为条件的所有遥测和属性都在有效负载中传递。
要开发和本地调试 Azure Functions,我建议使用Fiddler 、Postman和JSON Editor Online 。请注意,在 Fiddler 中启用对加密的 http 请求的解码可能会导致您计算机上的其他应用程序出现故障。
// Connect to a node on one of the main networks.
var repository = new RestIotaRepository(new RestClient("https://nodes.devnet.thetangle.org:443"));
// Get addresses from the Tangle on behalf of the patient's wallet for generating new address for posting reading.
// Would be an external trusted service.
var tangleAddresses = NationalIdentityService.GetTangleAddressesFromNprId(repository, nprId, ((JObject)telemetry).Count);
// Create transactions for the Tangle for each type of reading in payload and bundle together.
// Finalize and sign.
var bundle = CreateTransaction(tangleAddresses, telemetry);
// Send the complete transactions to the Tangle.
repository.SendTrytes(bundle.Transactions, depth: 2, minWeightMagnitude: 9);
请浏览服务器代码以获取更多详细信息。
结果
Webhook 的结果是代表患者在 Tangle 上进行的交易。
这些数据现在可用于许多不同的情况,无论医院、诊所或国家。
打开电子病历
“openEHR”是电子健康技术的名称,由开放规范、临床模型和软件组成,可用于创建标准,并为医疗保健构建信息和互操作性解决方案。openEHR 的各种人工制品由 openEHR 社区生产,由 openEHR 基金会管理,openEHR 基金会是一家成立于 2003 年的国际非营利组织。
openEHR 是一个庞大的主题,超出了本项目描述的范围。简而言之,我的实施基于“生命体征”项目的工作,该项目试图标准化如何描述常见的临床观察结果和全球可读性。我不得不大幅压缩格式以适应此应用程序。我还对结构的创建进行了硬编码,省略了模板存储库。这是尝试证明一个概念,而不是完全兼容 openEHR。
邀请您探索 openEHR 临床知识管理器或下载Ocean Health Systems Archetype Editor以了解有关数据结构的更多信息。
安全
MT3620 在硬件层面有一些非常有趣的安全特性。希望我们能少看到这样的报道。
得到教训
- 在开发此项目时,Azure IoT Central 规则中的电子邮件警报从未起作用。
- Azure Sphere 初学者工具包的 Wi-fi 连接在首次配置时非常不稳定。除了我们的主要 5G 网络之外,我尝试设置一个辅助 2G wi-fi 网络,连接变得更加稳定。
- Azure IoT Central 是一个非常好的解决方案。因为我最终花时间开发 Azure IoT 中心可能会节省我一些时间并启用更多的洞察力和工具。
- openEHR 很复杂,不是一个周末的阅读。
限制
领域驱动设计领域的专家倾向于同意:电子病历和医疗保健系统通常属于软件设计中最复杂的领域。openEHR 专为复杂健康系统之间的互操作性而设计,需要按比例缩小以适应轻量级设备。
我想为患者的分布式健康记录历史制作一个可视化工具,并尝试将其导入到我使用的 EHR 系统中。这将不得不留给未来的项目。
在未来的项目中,我想尝试更多类型的传感器,如前所述。
Tangle 中 openEHR 数据的加密是在开发过程中留下的,AES 加密是最明显的选择。
全面部署的潜在成就
如果全世界的每一位患者都获得其医疗数据的单一来源所有权,那么虐待的风险就会大大降低。这些数据仅在相关时共享并且不会被不必要地复制,这将增加隐私、安全和信任。安全的家庭监控将增加发现健康问题的机会,并减轻晚期疾病医院和诊所的负担。使用全球适用的数据格式将减少机构之间虐待的来源,并进一步开放患者的跨境安全交流。
现代医疗保健必须转向其发展方向。
关于使用 IOTA 作为患者拥有的分布式健康记录的最终想法
项目的核心如期进行,我开始专注于重要的事情。在进行这项工作时,我开始考虑使用屏蔽身份验证消息(MAM) 作为一种方式,让感兴趣的各方与患者的家庭监控保持同步。这将不得不留给未来的项目。
- 分布式工业物联网云平台 0次下载
- 分布式电源对配电系统的影响分析
- 基于Simulink的电子对抗分布式仿真系统 26次下载
- 基于分布式仿真系统的实时通讯架构 11次下载
- 基于KingSCADA的分布式运动控制监测系统 10次下载
- 基于DSP的航空发动机分布式总线设计方案 14次下载
- 电力物联网下分布式的源网荷储协同调度机制 14次下载
- 基于分布式数据Cache的实时动态迁移机制 20次下载
- 一种分布式网络扫描架构和任务调度算法 19次下载
- 分布式光伏电站接入低压配电网稳定性研究 9次下载
- 工业物联网分布式分析解决方案优化资源管理 4次下载
- 分布式控制应用的通信注意事项 7次下载
- TD分布式基站技术探讨
- 分布式发电技术与微型电网
- 分布式对象调试中的事件模型
- 隐私计算在分布式认知工业互联网中的应用研究 464次阅读
- Java手写分布式锁的实现 424次阅读
- tldb提供分布式锁使用方法 761次阅读
- 深入理解redis分布式锁 763次阅读
- 鸿蒙分布式相机“踩坑”分享 1578次阅读
- Redis分布式锁真的安全吗? 880次阅读
- 利用NI VeriStand 2010实现分布式同步系统的设计 3154次阅读
- 详谈分布式系统的定义及属性 3689次阅读
- 分布式光纤传感器原理_分布式光纤传感器的应用 8425次阅读
- 分布式工业物联网云平台是怎样的 1694次阅读
- Redis 分布式锁的正确实现方式 3483次阅读
- 浅谈分布式块存储的元数据服务设计 4871次阅读
- 深度解读分布式存储技术之分布式剪枝系统 1773次阅读
- 分布式电源应用若干问题解答 1329次阅读
- 基于CAN总线的分布式网架健康状态监测系统的设计 963次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多