Как должен использоваться openEHR?
Я исследую электронные медицинские записи (EHR). OpenEHR, по-видимому, довольно распространен и оценен в этой области, поскольку он широко принят. Однако я не могу найти, как он используется. Я имею в виду, я могу видеть все определения архетипов и то, как эти определения написаны в ADL или XML. Но, как только у меня есть архетип, который является именно этим, определением определенной модели данных, как я могу это использовать? Есть ли другой тип представления, возможно, также в ADL или XML? Есть ли примеры фактических медицинских записей для пациента? Я потратил часы на поиск примера записи здоровья Джона Доу, с такой информацией, как пол, возраст, кровяное давление и так далее, но все примеры, которые я могу найти, касаются определений этих терминов.
Если кто-нибудь может поставить меня на правильный путь, я был бы признателен. Заранее спасибо!
8 ответов
спецификация openEHR описывает, как написать систему на основе этого двухслойного подхода...ряд компаний по всему миру теперь используют архитектуру в качестве основы для своих систем. Ваше разочарование не ново, так как это требовательный шаг. Но в результате медицинские записи могут быть разделены системами, С пост-специальным открытием формального значения. Модели могут быть написаны на любом языке, добавляя языки, как вы идете....нет языкового первенства.
I советуем подписаться на openehr.org технический список рассылки и задать тот же вопрос.
Ура Сэм Слышал OpenEHR Foundation
после наличия набора архетипов, который определяет вашу клиническую запись (структуру, ограничения, терминологию), я бы рекомендовал создать ваши операционные Шаблоны (OPT) с помощью конструктора шаблонов Ocean. Это большой XML со всеми ссылками на семантику архетипов в одном файле (прост в обращении).
после этого вы должны сделать несколько вариантов дизайна:
- Технологии баз данных
вы можете выбрать реляционное, объектное или технология на основе документов. Мое предпочтение-это сочетание реляционной + некоторой поддержки XML. Большинство реляционных СУБД сегодня поддерживают xml как собственный тип данных.
- модель данных
существует две экстремальные модели a) сопоставьте RM 1-1 с моделью DB, b) используйте подход ключ/значение. Для требований, которые должны запрашивать иерархию a) лучше, но у вас будет много соединений в реляционных СУБД. Для запросов на основе простых данных b) лучше, но вам нужно будет иметь некоторую логику, если вы хотите построить иерархию из наборов k/V.
Почему я упомянул иерархии? Как вы могли заметить, информационная модель openEHR имеет древовидную структуру, поэтому по умолчанию является иерархической, и это потому, что клиническая информация иерархична по своей природе.
то, что я делал в моем EHRServer, создавало структурированные индексы в реляционной СУБД. Этот подход находится в середине а) и Б). Я также использую инструменты ORM (http://grails.org/doc/latest/guide/GORM.html) для автоматического сопоставления экземпляров объектов в таблицы.
одним из ключевых аспектов модели данных является сохранение ссылки на архетип, который определяет каждую точку данных, что может быть сделано в самой БД или с помощью метаданных для сопоставления путей архетипа к таблице/столбцу.
- определение пользовательского интерфейса
вы можете создать свой пользовательский интерфейс вручную, или создать его из шаблонов архетипы +. В любом случае вам понадобится некоторые метаданные для привязки полей пользовательского интерфейса к полям архетипов. Для этого я использую идентификатор поля и путь archetypeId +.
Это помогает мне связать входные данные от врачей в информационную модель openEHR, и с правильными метаданными это можно сделать общим способом.
Если вы не знаете об идентификаторах архетипов и путях, пожалуйста, прочитайте:http://openehr.org/releases/1.0.2/architecture/am/archetype_principles.pdf
Я бы также рекомендовал обзор архитектуры:http://openehr.org/releases/1.0.2/architecture/overview.pdf
- бизнес-логики
привязка данных к вашей модели данных является частью бизнес-логики, а также проверка этих данных. Для проверки я использую ограничения, которые появляются в архетипах и рабочих шаблонах. Если у вас есть путь к архетипу Id +, вы можете получить ограничение от архетипа, а затем вы можете оценить это ограничение по входным данным данные.
- интеграция предыдущих компонентов
склейте все вещи вместе, и у вас будет: UI logic DB
надеюсь, это поможет.
добро пожаловать в мир openEHR :)
вы также можете найти, глядя на примеры с открытым исходным кодом полезно-мы внедрили приложение отчетности эндоскопии с помощью openEHR от персистентности до автоматизированного GUI. Приложение .Net winforms в этом случае, но использует MVC, поэтому я бы предположил, что не будет слишком сложно использовать веб-или мобильные интерфейсы. То, что вы не найдете в openEHR на данный момент, - это средство моделирования " UI "вместе с данными, поэтому мы использовали "Хак" и использовали аннотации для создания некоторых "директив 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 Inform. 2011;169: 849-53.
Atalag K, Yang HY. От моделей домена openEHR до расширенных пользовательских интерфейсов: пример исследования в эндоскопии. Wellington; 2010. Доступно по адресу:http://www.hinz.org.nz/uploads/file/2010conference/P17_Atalag.pdf
удачи! Последнее примечание-HL7, как отмечали некоторые другие, для "вне систем" или для обмен информацией о здоровье-Некоторые пытались использовать RIM для создания приложений. openEHR существует для этой цели-так что это спецификации для создания систем EHR. Новый стандарт FHIR от HL7 имеет сходство с точки зрения определения клинических моделей данных - я также рекомендую следить за этим пространством: мы надеемся, что какая-то конвергенция произойдет в не столь отдаленном будущем ;)
вы также можете посмотреть на
dev.ehrscape.com который основан на базовом бэкэнде openEHR и
посмотрите на вызов GET composition
вы увидите пример данных jsonified openEHR. Это упрощенная версия "канонических" данных openEHR, но помогает дать вам представление о генральной структуре
другие примеры находятся в http://www.medvision360.com/medcloud/?lang=en, simialrly с 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"
]
}
]
}
}
вы можете найти некоторую помощь, посмотрев эту работу на GitHubhttps://github.com/ppazos?tab=repositories многое из этого основано на концепциях openEHR.
в мире многоуровневого моделирования знаний в здравоохранении также существует MLHIM. MLHIM вырос из опыта работы с openEHR и основан непосредственно на стандартах XML. www.mlhim.org и https://github.com/mlhim
записи компилируются и передаются в формате XML другим поставщикам или организациям. HL7 используется для отправки сообщений, таких как лабораторные заказы/от поставщиков лаборатории с конкретными OBR и OBX.
Я не уверен, что вы хотите сделать с вашим исследованием - если вы создаете свое собственное приложение/сайт, то я бы предложил синюю кнопку Плюс. Это инициатива ONC, и js будет анализировать большинство документов CCDA (XML-документ с информацией о пациенте из EHR). Посмотрите библиотеку на GitHub - https://github.com/blue-button/bluebutton.js
самое главное, исследовать фон (закон HITECH) и знать проблемы (совместимость с EHR). Перейти к HHS.gov и посмотрите на информацию там. Кроме того, вам понадобится кто-то, кто знает медицинскую терминологию и коды (ICDs, CPTs, SNOMED и т. д.) а также клинический консультант, потому что у вас могут быть все данные в мире, но если вы не отображаете их надлежащим или значимым образом, это по существу бесполезный.
Если вас интересует сочетание отдых+openEHR (или иного архетипа на основе ЭМК подходы, такие как Кими или ISO 13606), то вы могли бы найти подход, описанный в http://www.biomedcentral.com/1472-6947/13/57 интересные, соответствующие открытым исходным кодом на языке Java доступна на https://github.com/LiU-IMT/EEE
более последние обсуждения относительно указания / стандартизации API OPENEHR REST можно найти на https://openehr.atlassian.net/wiki/display/spec/openEHR + REST + API
наличие стандартизированного API REST для openEHR позволит приложениям конечных пользователей подключаться к бэкэндам openEHR от нескольких разных поставщиков/проектов, чтобы вам не нужно было тратить столько времени на хранение и запрос.
упрощенный ответ на ваш вопрос:
- модель данных: использовать любой платформе, на которой adhers спецификации openEHr.
- ограничения данных: используйте архетипы: можно определить в ADL или XML
- экземпляр записи openEHR: XML
- база данных: любая
вот запись openEHR для глюкозы в крови с клиническими данными, закодированными с помощью LOINC:
<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>