我正在研究电子健康记录(EHR)。 OpenEHR似乎在这个领域得到了广泛的推广和欣赏,因为它被广泛采用。但是,我没有找到它是如何使用的。我的意思是,我可以看到原型的所有定义,以及这些定义是如何用ADL或XML编写的。但是,一旦我有一个原型,就是某个数据模型的定义,我该如何使用它?是否有另一种表示形式,也可能是ADL或XML?是否有患者的实际健康记录示例?我花了几个小时寻找John Doe的健康记录示例,其中包括性别,年龄,血压等信息,但我能找到的所有例子都是关于这些术语的定义。
如果有人能让我走上正轨,我将不胜感激。提前谢谢!
答案 0 :(得分:7)
在拥有指定临床记录(结构,约束,术语)的原型集之后,我建议使用海洋模板设计器创建操作模板(OPT)。这是一个大型XML,在一个文件中包含所有引用的原型语义(易于处理)。
之后,你必须做出一些设计选择:
您可以选择基于关系,基于对象或基于文档的技术。我的偏好是关系+一些XML支持的混合。今天大多数关系型DBMS都支持xml作为本机数据类型。
有两种极端模型a)将RM 1-1映射到DB模型,b)使用键/值方法。对于需要查询层次结构的需求,a)更好,但是您在关系DBMS中会有很多连接。对于基于普通数据的查询,b)更好,但如果你想从k / v集合建立层次结构,你需要有一些逻辑。
为什么我提到了层次结构?您可能会注意到,openEHR信息模型具有树结构,因此默认情况下是层次结构,因为临床信息本质上是分层的。
我在EHRServer中所做的是在关系型DBMS中创建结构化索引。这种方法位于a)和b)的中间。我还使用ORM工具(http://grails.org/doc/latest/guide/GORM.html)自动将对象实例映射到表中。
数据模型的一个关键方面是保存对定义每个数据点的原型的引用,可以在DB本身中完成,也可以使用元数据将原型路径映射到表/列。
您可以手动创建UI,也可以从原型+模板生成UI。无论哪种方式,您都需要一些元数据来将UI上的字段绑定到原型上的字段。为此,我使用字段id和archetypeId +路径。
这有助于我将医生的输入数据绑定到openEHR信息模型中,并且通过正确的元数据,这可以通用方式完成。
如果您不了解原型ID和路径,请阅读:http://openehr.org/releases/1.0.2/architecture/am/archetype_principles.pdf
我还建议使用架构概述:http://openehr.org/releases/1.0.2/architecture/overview.pdf
将数据绑定到数据模型是业务逻辑的一部分,也验证了数据。为了验证,我使用了原型和操作模板中出现的约束。如果你有原型Id +路径,你可以从原型获得约束,然后你可以根据输入数据评估该约束。
将所有内容粘贴在一起,您将拥有:UI< - >逻辑< - > DB
希望有所帮助。
答案 1 :(得分:6)
openEHR规范描述了如何基于这种双层方法编写系统......世界各地的许多公司现在都使用该架构作为其系统的基础。 你的沮丧并不新鲜,因为这是一个艰难的步骤。但结果是健康记录可以由系统共享,并具有正式意义的事后发现。这些模型可以用任何语言编写,随时添加语言......没有语言优势。
我建议您订阅openehr.org技术邮件列表并提出相同的问题。
干杯萨姆赫德 OpenEHR基金会
答案 2 :(得分:5)
欢迎来到openEHR世界:)
您也可以找到有用的开源示例 - 我们已经使用openEHR从持久性到自动GUI实现了内窥镜报告应用程序。在这种情况下,.Net赢得了应用程序,但使用了MVC,所以我认为使用Web或Mobile前端并不太难。你目前在openEHR中找不到的是建模和用户界面的手段。与数据一起 - 因此我们使用了' hack'和利用注释功能来创建一些" GUI指令"这些都嵌入到临床模型中。
查看:http://gastros.codeplex.com
还写了几篇论文'关于openEHR的实施,如果你喜欢那种东西;)
Atalag K,Yang HY,Tempero E,Warren JR。使用openEHR评估软件可维护性 - 架构比较。国际医学信息学杂志
Atalag K,Yang HY,Tempero E,Warren J.使用openEHR模拟驱动的临床信息系统开发。 Stud Health Technol通知。 2011; 169:849-53。
Atalag K,Yang HY。从openEHR领域模型到高级用户界面:内窥镜检查的案例研究。惠灵顿; 2010.可从:http://www.hinz.org.nz/uploads/file/2010conference/P17_Atalag.pdf
获取 祝你好运!最后一个注意事项 - HL7正如其他一些人所指出的那样,是出于系统之外的问题。或者为了健康信息交换 - 一些人试图使用RIM来构建应用程序。 openEHR就是为此目的而存在的 - 所以它是构建EHR系统的规范。 HL7新出现的FHIR标准在定义临床数据模型方面有相似之处 - 我还建议观察这个空间:我们希望在不远的将来会出现某种趋同;)答案 3 :(得分:4)
您可能还想查看
dev.ehrscape.com,它基于底层的openEHR后端和
查看GET组合调用
您将看到JSONified openEHR数据的示例。这是'规范'的简化版本。 openEHR数据,但有助于您了解一般结构
其他示例位于http://www.medvision360.com/medcloud/?lang=en,类似于基于openEHR的数据模型
以下是json格式的生命体征片段......
{
"ctx":{
"language":"en",
"territory":"GB",
"composer_name":"Sr. Kristen George"
},
"nursing_vital_signs_observations":{
"vital_signs":[
{
"respirations":[
{
"any_event":[
{
"rate":[
{
"|magnitude":16,
"|unit":"/min"
}
],
"time":[
"2014-07-17T15:18:07.339+01:00"
]
}
]
}
]
},
{
"blood_pressure":[
{
"any_event":[
{
"systolic":[
{
"|magnitude":123,
"|unit":"mm[Hg]"
}
],
"diastolic":[
{
"|magnitude":102,
"|unit":"mm[Hg]"
}
],
"time":[
"2014-07-17T15:18:07.339+01:00"
]
}
]
}
]
},
{
"pulse":[
{
"any_event":[
{
"heart_rate":[
{
"|magnitude":93,
"|unit":"/min"
}
],
"time":[
"2014-07-17T15:18:07.339+01:00"
]
}
]
}
]
},
{
"indirect_oximetry":[
{
"any_event":[
{
"spo2":[
{
"|numerator":94,
"|denominator":100
}
],
"time":[
"2014-07-17T15:18:07.339+01:00"
]
}
]
}
]
}
],
"context":[
{
"setting":[
{
"|code":"233",
"|value":"secondary nursing care",
"|terminology":"openehr"
}
],
"start_time":[
"2014-05-22T15:18:07.339+01:00"
]
}
]
}
}
答案 4 :(得分:3)
您可以通过查看GitHub上的这项工作找到一些帮助https://github.com/ppazos?tab=repositories,其中很多都是基于openEHR概念。
在医疗保健领域的多层次知识建模领域,也有MLHIM。 MLHIM源于openEHR的经验,直接基于XML标准。 www.mlhim.org和https://github.com/mlhim
答案 5 :(得分:2)
记录被编译并以XML格式传输给其他供应商或组织。 HL7用于向具有特定OBR和OBX的实验室供应商发送实验室订单等消息。
我不确定您的研究是什么 - 如果您正在构建自己的应用/网站,那么我建议使用蓝色按钮。这是ONC的一项倡议,并且js将解析大多数CCDA(带有来自EHR的患者信息的XML文档)文档。查看GitHub上的库 - https://github.com/blue-button/bluebutton.js
最重要的是,研究背景(HITECH法案)并了解挑战(EHR互操作性)。转到HHS.gov并查看那里的信息。此外,您将需要知道医学术语和代码(ICD,CPT,SNOMED等)以及临床顾问的人,因为您可以拥有世界上的所有数据,但如果您不显示它以适当或有意义的方式,它基本上是无用的。
答案 6 :(得分:1)
如果您对组合REST + openEHR(或其他基于原型的EHR方法,如CIMI或ISO 13606)感兴趣,那么您可能会发现http://www.biomedcentral.com/1472-6947/13/57中描述的方法有趣,相应的Java开源代码可用在https://github.com/LiU-IMT/EEE
有关指定/标准化openEHR REST API的最新讨论,请访问https://openehr.atlassian.net/wiki/display/spec/openEHR+REST+APIs
为openEHR提供标准化的REST API将使最终用户应用程序能够连接到来自多个不同供应商/项目的openEHR后端,这样您就不需要在存储上花费太多时间。查询。
答案 7 :(得分:1)
简化回答您的问题:
以下是使用LOINC编码的临床数据的血糖openEHR记录:
<namespace>EHR</namespace>
<type>COMPOSITION</type>
</contribution>
<commit_audit>
<system_id>10aec661-5458-4ff6-8e63-c2265537196d </system_id>
<committer xsi:type="PARTY_IDENTIFIED">
<name>guest</name>
</committer>
<time_committed>
<value>2008-05-22T10:34:28</value>
</time_committed>
<change_type>
<value>creation</value>
<defining_code>
<terminology_id>
<value>openehr</value>
</terminology_id>
<code_string>249</code_string>
</defining_code>
</change_type>
</commit_audit>
<uid>
<value>c7ff23f4-6ad2-4ff9-bedf-fb60be37666e::10aec661-5458-4ff6-8e63-c2265537196d::1
</value>
</uid>
<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="COMPOSITION" xmlns="http://schemas.openehr.org/v1" archetype_node_id="openEHR-EHR-COMPOSITION.report.v1">
<name>
<value>Blood glucose report</value>
</name>
<archetype_details>
<archetype_id>
<value>openEHR-EHR-COMPOSITION.report.v1</value>
</archetype_id>
<template_id>
<value>blood_glucose</value>
</template_id>
<rm_version>1.0.1</rm_version>
</archetype_details>
<language>
<terminology_id>
<value>ISO_639-1</value>
</terminology_id>
<code_string>en</code_string>
</language>
<territory>
<terminology_id>
<value>ISO_3166-1</value>
</terminology_id>
<code_string>AU</code_string>
</territory>
<category>
<value>event</value>
<defining_code>
<terminology_id>
<value>openehr</value>
</terminology_id>
<code_string>433</code_string>
</defining_code>
</category>
<composer xsi:type="PARTY_IDENTIFIED">
<name>Some Labs, at some place</name>
</composer>
<context>
<start_time>
<value>2012-02-26T11:44:17+1000</value>
</start_time>
<setting>
<value>other care</value>
<defining_code>
<terminology_id>
<value>openehr</value>
</terminology_id>
<code_string>238</code_string>
</defining_code>
</setting>
<other_context xsi:type="ITEM_TREE" archetype_node_id="at0001">
<name>
<value>other context</value>
</name>
</other_context>
</context>
<content xsi:type="SECTION" archetype_node_id="openEHR-EHR-SECTION.diagnostic_reports.v1">
<name>
<value>Blood Glucose</value>
</name>
<items xsi:type="OBSERVATION" archetype_node_id="openEHR-EHR-OBSERVATION.lab_test-blood_glucose.v1">
<name>
<value>Blood glucose</value>
</name>
<language>
<terminology_id>
<value>ISO_639-1</value>
</terminology_id>
<code_string>en</code_string>
</language>
<encoding>
<terminology_id>
<value>IANA_character-sets</value>
</terminology_id>
<code_string>UTF-8</code_string>
</encoding>
<archetype_details>
<archetype_id>
<value>openEHR-EHR-OBSERVATION.lab_test-blood_glucose.v1</value>
</archetype_id>
<template_id>
<value>Blood glucose</value>
</template_id>
<rm_version>1.0.1</rm_version>
</archetype_details>
<subject xsi:type="PARTY_IDENTIFIED">
<externalRef xsi:type="PARTY_PROXY">
<id >
<value>1.2.4.5.6.12.1</value>
<root >
<value>1.2.4.5.6.12.1</value>
</root>
</id>
<namespace>DEMOGRAPHIC</namespace>
<type>PERSON</type>
</externalRef>
<name>Patient Name</name>
<identifiers xsi:type="DV_IDENTIFIER">
<issuer>Some issuer id</issuer>
<assigner>Some Assignee</assigner>
<id>B5404149</id>
<type>null</type>
</identifiers>
</subject>
<protocol xsi:type="ITEM_TREE" archetype_node_id="at0033">
<name>
<value>Tree</value>
</name>
<items xsi:type="CLUSTER" archetype_node_id="at0039">
<name>
<value>Specimen details</value>
</name>
<items xsi:type="ELEMENT" archetype_node_id="at0040">
<name>
<value>DateTime received</value>
</name>
<value xsi:type="DV_DATE_TIME">
<value>2006-11-22T18:57:01</value>
</value>
</items>
<items xsi:type="ELEMENT" archetype_node_id="at0041">
<name>
<value>DateTime processed</value>
</name>
<value xsi:type="DV_DATE_TIME">
<value>2006-11-22T18:57:01</value>
</value>
</items>
</items>
</protocol>
<data archetype_node_id="at0001">
<name>
<value>data</value>
</name>
<origin>
<value>2006-11-22T18:57:01</value>
</origin>
<events xsi:type="POINT_EVENT" archetype_node_id="at0002">
<name>
<value>Any event</value>
</name>
<time>
<value>2006-11-22T18:57:01</value>
</time>
<data xsi:type="ITEM_TREE" archetype_node_id="at0003">
<name>
<value>Tree</value>
</name>
<items xsi:type="ELEMENT" archetype_node_id="at0005">
<name xsi:type="DV_CODED_TEXT">
<value>Glucose 1h^Post Meal</value>
<defining_code>
<terminology_id>
<value>LN</value>
</terminology_id>
<code_string>10449-7</code_string>
</defining_code>
</name>
<value xsi:type="DV_TEXT">
<value>Blood Glucose</value>
</value>
</items>
<items xsi:type="ELEMENT" archetype_node_id="at0004">
<name>
<value>Blood glucose</value>
</name>
<value xsi:type="DV_QUANTITY">
<magnitude>100</magnitude>
<units>mmol/l</units>
<precision>0</precision>
</value>
</items>
</data>
</events>
</data>
</items>
</content>
</data>
<lifecycle_state>
<value>completed</value>
<defining_code>
<terminology_id>
<value>openehr</value>
</terminology_id>
<code_string>532</code_string>
</defining_code>
</lifecycle_state>