×

使用物联网和IOTA的分布式健康记录

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-19

分享资料个

描述

问题

患者想知道为什么他们必须重复医疗信息,以及为什么一旦记录在案他们就无法访问这些信息。

临床医生想知道为什么他们必须花时间重复输入相同的信息,以及为什么他们无法从其他医疗保健提供者甚至同一家医院的子系统访问患者的健康史。

来自https://www.iota.org/verticals/ehealth

传统上,医疗保健数据被孤立在不同的机构中,甚至在一个机构中。这些孤岛阻碍了有意义的数据共享和重用,并限制了可提供的护理质量。要接受治疗,一个人可能需要就一次事件咨询多个提供者。当个人从初级保健诊所转到医院再转到专科诊所并再次返回时,记录不会无缝共享,从而降低了他们的护理连续性。

尽管许多国家最近进行了政治冒险,但我们的数据在医疗保健专业人员之间的共享并不令人满意,基本医疗信息被多次复制。随着能够监测临床参数的消费设备数量急剧增加,孤岛的数量正在爆炸式增长。

该项目探讨了让患者完全拥有医疗信息的可能性,以及与相关医疗保健提供者共享这些信息的能力。它引入了分布式健康记录 (DHR) 的概念。这适用于使用 IOTA、Azure Sphere 和 openEHR 进行安全医疗家庭监控的示例。

 
poYBAGOIOqWAKchfAAdmlm6QWQY152.png
Azure Sphere 初学者工具包
 

我的背景

凭借在北欧国家开发主要电子医疗记录 (EHR) 系统 15 年的经验,我对医学期刊的复杂性和系统之间的互操作性有着第一手的经验。此外,我正在运用我在保护低功耗物联网设备方面的知识。

这是个人的

今年早些时候,我利用业余时间在低功耗微控制器上使用 LPWAN 技术对健康监测设备进行了原型设计。三月的一天,在工作时,我的心跳毫无征兆地停止了。在我被送往医院之前,我的同事为我进行了心肺复苏术并使用除颤器使我苏醒。

 
poYBAGOIOqiAZN4uAAMWNCM2kOs898.jpg
在急诊室,每当我的心脏出现心室颤动 (v-fib) 时,除颤器就会启动。(c) 埃文德霍尔特
 

发现了一种遗传性疾病 LQTS,我最终得到了植入式心律转复除颤器 (ICD)。该设备是未来事件的保障,它还与向我当地医院报告遥测数据的基站进行通信。虽然这些技术已证明对健康有很大好处,但我对安全问题和数据可用性很感兴趣。

 
poYBAGOIOqyAILspAAAml-WFZaQ698.png
植入式心律转复除颤器 (ICD)
 

第一个问题让我想到了我是骑兵,并对我自己的原型的安全性提出了质疑。到目前为止,这将我带到了 Azure Sphere MT3620 及其安全重点。

医疗保健行业已采用计算机化的连接技术来更快地部署改进的医疗设备。当今市场上超过一半的医疗设备都在软件上运行:植入式;诊断机;监控设备。这些技术具有惊人的拯救生命、快速诊断和提高生活质量的能力,因此安全故障就是未能保护人类生命

我还发现,我的 ICD 报告的数据最终在医院的一个单独的断开连接的子系统中,并且不能立即提供给其他医院、诊所、医院外的急诊室甚至同一医院内的其他病房。这意味着,如果我在度假期间最终进了急诊室,他们不太可能知道我的 ICD 前一天晚上是否报告了故障。在我国,患者可以登录国家门户网站并阅读健康记录。ICD 的数据不受此限制,我只能猜测,由于技术不兼容。

 
系统之间缺乏互操作性和健康数据的可用性是 IOTA 的用武之地,也是这个概念验证的主要关注点。

建筑学

我不相信有人可以将 IOTA 种子和多个密码的管理留给各种患者。89 岁的 Maud 因头晕去看医生时不会背诵她的 81 个字符的 IOTA 种子或高安全密码。我提出的解决方案是将 IOTA 中患者拥有的医疗数据与已经在许多国家实施的国家患者门户整合。您会信任该方创建和维护您的医疗钱包,并且您会允许或拒绝医疗保健从业者在需要时访问它。对于喜欢冒险的人,可以在门户中访问种子。此外,存储在 Tangle 中的实际医疗数据将被加密。

技术

该项目是一个概念验证 (PoC),由以下部分组成:

它旨在用于监测患者:

  • 在家自行管理
  • 在家庭护理的监督下
  • 在疗养院自我管理或监督
  • 自我管理或在医院和诊所的监督下

先决条件

可选,但强烈推荐

传感器

对于此 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

 
pYYBAGOIOq6ATO93AACNlu8F968982.jpg
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”,但可能会发生变化。

 
pYYBAGOIOrGAdK7_AADpM7nIVH4614.png
目标 API 集
 

以 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,也可以在产品页面上找到它。

 
pYYBAGOIOrOACYVFAAC6EmKJ2Po259.png
心率 4 引脚排列
 

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)"}

 
poYBAGOIOreAbKmgAAElDxrcWCM253.png
 

我邀请您进一步检查客户端应用程序或 HR4 示例以了解传感器的使用方式。不要担心计算测量值的算法。

Azure IoT Central 遥测

其余代码主要是关于将遥测数据同步和推送到 IoT Central。查看 azure-sphere-samples/Samples/AzureIoT 以获取独立示例。

Azure 物联网中心应用程序

我熟悉 Azure IoT Hub,所以我选择在这个项目中使用 IoT Central。底层机制大同小异,但您可以用很少的代码或不用代码实现很多。设置应用程序有详细记录,请按照本指南了解更多信息。

 
poYBAGOIOrmAHBL4AAEZw-YqOKg859.png
Azure 物联网中心模板
 

我的应用程序定义了一个具有以下功能的设备模板:

  • 遥测心率和 SpO2。
  • 设备心跳事件。
  • 状态 LED(用于调试、检查连接)和 NPR Id 的设置。NPR Id 是我用来将读数分配给正确患者的 IOTA 钱包的国家患者标识符。当将设备分配给患者进行家庭监护时,操作员将使用此设置。对于在多个患者中使用,可以使用 NFC、Chirp 、条形码或类似物来激活正确的患者。
  • 传感器版本和 NPR Id 的属性。
  • 带有 webhook 的规则,用于触发 Azure Functions 以创建 IOTA 事务。

您可能会在“设置”和“属性”下注意到 NPR Id,稍后会详细介绍。

 
pYYBAGOIOryAEQlPAAAT8DgdNZs607.png
模板设置
 
 
poYBAGOIOr6AQ-stAAAbbbfUPsA520.png
模板属性
 
 
pYYBAGOIOsGAfrG6AADPfEpsaQo786.png
模板规则
 
 
poYBAGOIOsSAKcH0AADGXmCrKfY698.png
规则 Webhook 操作
 

Azure IoT Central深入指南。有关webhooks的更多信息

我建议使用RequestBin来调试和探索 http 负载。请注意,您必须每 48 小时创建一个新地址。

 
pYYBAGOIOseAYzUZAAGatTTJz-w178.png
请求库
 

为了监视从设备到 Azure IoT Central 的遥测,我使用了工具iotc-explorer

 
poYBAGOIOsmABHlIAAEoiVGoAg0872.png
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 PostmanJSON Editor Online 请注意,在 Fiddler 中启用对加密的 http 请求的解码可能会导致您计算机上的其他应用程序出现故障。

 
pYYBAGOIOsyAeIp4AAFkYuWqQOM796.png
邮差
 

// 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 上进行的交易。

 
poYBAGOIOs-AFMe5AAC3zUCT4hI381.png
在 Trinity 钱包中查看的交易
 
 
poYBAGOIOtKAdeZTAADKk7LsgaY582.png
在 devnet 上创建的包
 
 
poYBAGOIOtaABgumAAEjamQ8yKI134.png
包含轻量级 openEHR 格式的 SpO2 测量的交易
 
 
pYYBAGOIOtmAeOHjAAExoydXnqk872.png
交易包含轻量级 openEHR 格式的心率测量
 

这些数据现在可用于许多不同的情况,无论医院、诊所或国家。

打开电子病历

“openEHR”是电子健康技术的名称,由开放规范、临床模型和软件组成,可用于创建标准,并为医疗保健构建信息和互操作性解决方案。openEHR 的各种人工制品由 openEHR 社区生产,由 openEHR 基金会管理,openEHR 基金会是一家成立于 2003 年的国际非营利组织。
 
pYYBAGOIOtuAJfydAAFamXSgTuw638.png
openEHR 临床知识管理器“生命体征”
 

openEHR 是一个庞大的主题,超出了本项目描述的范围。简而言之,我的实施基于“生命体征”项目的工作,该项目试图标准化如何描述常见的临床观察结果和全球可读性。我不得不大幅压缩格式以适应此应用程序。我还对结构的创建进行了硬编码,省略了模板存储库。这是尝试证明一个概念,而不是完全兼容 openEHR。

邀请您探索 openEHR 临床知识管理器或下载Ocean Health Systems Archetype Editor以了解有关数据结构的更多信息。

 
pYYBAGOIOt6AFD-SAAEaDG4dHfw563.png
原型编辑器
 

安全

MT3620 在硬件层面有一些非常有趣的安全特性。希望我们能少看到这样的报道

得到教训

  • 在开发此项目时,Azure IoT Central 规则中的电子邮件警报从未起作用。
  • Azure Sphere 初学者工具包的 Wi-fi 连接在首次配置时非常不稳定。除了我们的主要 5G 网络之外,我尝试设置一个辅助 2G wi-fi 网络,连接变得更加稳定。
  • Azure IoT Central 是一个非常好的解决方案。因为我最终花时间开发 Azure IoT 中心可能会节省我一些时间并启用更多的洞察力和工具。
  • openEHR 很复杂,不是一个周末的阅读。

限制

领域驱动设计领域的专家倾向于同意:电子病历和医疗保健系统通常属于软件设计中最复杂的领域。openEHR 专为复杂健康系统之间的互操作性而设计,需要按比例缩小以适应轻量级设备。

我想为患者的分布式健康记录历史制作一个可视化工具,并尝试将其导入到我使用的 EHR 系统中。这将不得不留给未来的项目。

在未来的项目中,我想尝试更多类型的传感器,如前所述。

 
poYBAGOIOuSARdDbAAkpDEWRIPg002.png
温度和心电图传感器
 

Tangle 中 openEHR 数据的加密是在开发过程中留下的,AES 加密是最明显的选择。

全面部署的潜在成就

如果全世界的每一位患者都获得其医疗数据的单一来源所有权,那么虐待的风险就会大大降低。这些数据仅在相关时共享并且不会被不必要地复制,这将增加隐私、安全和信任。安全的家庭监控将增加发现健康问题的机会,并减轻晚期疾病医院和诊所的负担。使用全球适用的数据格式将减少机构之间虐待的来源,并进一步开放患者的跨境安全交流。

现代医疗保健必须转向其发展方向。
 

关于使用 IOTA 作为患者拥有的分布式健康记录的最终想法

项目的核心如期进行,我开始专注于重要的事情。在进行这项工作时,我开始考虑使用屏蔽身份验证消息(MAM) 作为一种方式,让感兴趣的各方与患者的家庭监控保持同步。这将不得不留给未来的项目。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !