11

我正在研究电子健康记录 (EHR)。OpenEHR 似乎在该领域得到了广泛的扩展和赞赏,因为它被广泛采用。但是,我找不到它是如何使用的。我的意思是,我可以看到原型的所有定义,以及这些定义是如何用 ADL 或 XML 编写的。但是,一旦我有了一个原型,即某个数据模型的定义,我该如何使用它?是否有另一种表示形式,可能也在 ADL 或 XML 中?是否有患者的实际健康记录示例?我花了几个小时寻找 John Doe 健康记录示例,其中包含性别、年龄、血压等信息,但我能找到的所有示例都是关于这些术语的定义。

如果有人能让我走上正轨,我将不胜感激。提前致谢!

4

8 回答 8

7

在拥有一组指定您的临床记录(结构、约束、术语)的原型之后,我建议使用 Ocean Template Designer 创建您的操作模板 (OPT)。这是一个大型 XML,在一个文件中包含所有引用的原型语义(易于处理)。

之后,您必须做出一些设计选择:

  1. 数据库技术

您可以选择关系、基于对象或基于文档的技术。我的偏好是关系+一些 XML 支持的混合。当今大多数关系 DBMS 都支持将 xml 作为本机数据类型。

  1. 数据模型

有两个极端模型 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 ) 将对象实例自动映射到表中。

数据模型的一个关键方面是保存对定义每个数据点的原型的引用,这可以在数据库本身中完成,也可以使用元数据将原型路径映射到表/列。

  1. 界面定义

您可以手动创建 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

  1. 商业逻辑

将数据绑定到您的数据模型是业务逻辑的一部分,同时也验证该数据。为了验证,我使用原型和操作模板中出现的约束。如果您有原型 Id + 路径,则可以从原型中获取约束,然后可以根据输入数据评估该约束。

  1. 整合先前的组件

将所有东西粘在一起,你将拥有: UI <-> 逻辑 <-> DB

希望有帮助。

于 2014-09-12T08:47:08.873 回答
6

openEHR 规范描述了如何基于这种双层方法编写系统……世界各地的许多公司现在都使用该架构作为其系统的基础。你的挫败感并不新鲜,因为这是一个艰巨的步骤。但结果是系统可以共享健康记录,并在事后发现正式意义。模型可以用任何语言编写,随时添加语言……没有语言优先。

我建议您订阅openehr.org技术邮件列表并提出同样的问题。

干杯山姆听到 OpenEHR 基金会

于 2014-08-23T03:15:25.557 回答
5

欢迎来到 openEHR 的世界 :)

您可能还会发现查看开源示例很有用 - 我们已经使用 openEHR 从持久性到自动化 GUI 实现了一个内窥镜检查报告应用程序。在这种情况下,一个 .Net winforms 应用程序使用 MVC,所以我认为使用 Web 或移动前端不会太难。目前您在 openEHR 中找不到的是将“UI”与数据一起建模的方法——因此我们使用“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 开发临床信息系统的模型驱动。螺柱健康技术通知。2011;169:849–53。

阿塔拉格 K,杨 HY。从 openEHR 域模型到高级用户界面:内窥镜案例研究。惠灵顿;2010 年。可从:http ://www.hinz.org.nz/uploads/file/2010conference/P17_Atalag.pdf

祝你好运!最后一点——正如其他人所指出的,HL7 用于“系统外”或健康信息交换——一些人试图使用 RIM 来构建应用程序。openEHR 就是为此目的而存在的——因此它是构建 EHR 系统的规范。来自 HL7 的新兴 FHIR 标准在定义临床数据模型方面有相似之处——我也建议关注该领域:我们希望在不久的将来会出现某种收敛;)

于 2014-09-13T03:37:18.107 回答
4

您可能还想看看

dev.ehrscape.com 基于底层 openEHR 后端和

查看 GET 组合调用

您将看到 JSON 化的 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"
        ]
      }
    ]
  }
}
于 2014-08-24T22:48:01.413 回答
3

通过查看 GitHub https://github.com/ppazos?tab=repositories上的这项工作,您可能会找到一些帮助,其中大部分是基于 openEHR 概念的。

在医疗保健领域的多层次知识建模领域也有 MLHIM。MLHIM 源于 openEHR 的经验,直接基于 XML 标准。www.mlhim.org 和https://github.com/mlhim

于 2014-08-23T11:08:54.197 回答
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 等)的人以及临床顾问,因为您可以拥有世界上所有的数据,但如果您不显示它以适当或有意义的方式,它本质上是无用的。

于 2014-08-28T17:30:59.980 回答
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 后端,这样您就不需要在存储和查询上花费太多时间。

于 2015-08-14T12:19:00.143 回答
1

您的问题的简化答案:

  • 数据模型:使用任何遵循 openEHr 规范的平台。
  • 数据约束:使用原型:可以在 ADL 或 XML 中定义
  • openEHR 记录实例:XML
  • 数据库:任意

这是一个使用 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>

于 2016-12-29T07:52:53.663 回答