Обзор FHIR-ресурса Conformance

FHIR-ресурс Conformance — “Заявление о соответствии” — это декларация фактической или желаемой функциональности FHIR-сервера.

В этом ресурсе реализаторы перечисляют типы ресурсов и операции, которые поддерживает их приложение, и дают ссылки на используемые профили и наборы значений.

Содержимое ресурса Conformance

(*) — обязательные элементы.

Типичные элементы: url, version, name, status* ( draft | active | retired), experimental (да/нет), date*, publisher, contact, description, useContext (например штат или мед. специальность), requirements (почему необходим этот ресурс), copyright.

kind* ( instance — текущие возможности конкретной инсталляции системы| capability — возможности системы независимо от инсталляции| requirements — требования к другим системам).

software — описание ПО, если kind=capability.

implementation — описание системы, если kind=instance.

fhirVersion* — версия стандарта.

acceptUnknown* — принимает ли это приложение неизвестные элементы или расширения при чтении ресурсов ( no — не принимает| extensions — только расширения| elements — только элементы| both — и расширения, и элементы).

format* — поддерживаемые форматы (xml | json | mime-тип).

profile — ссылки на ресурсы StructureDefinition — поддерживаемые профили сценариев использования.

rest — если описываем RESTful-интерфейс. Вложенные элементы: mode ( client | server), documentation (общее описание реализации), security ( информация о безопасности реализации с точки зрения интерфейса — что необходимо знать клиенту), resource ( ресурс, обслуживаемый в этом REST-интерфейсе; в этом элементе указывается тип ресурса, ссылка на базовый профиль, перечисляются поддерживаемые для этого ресурса операции, параметры поиска), interaction (какие операции поддерживаются: transaction | search-system | history-system), transactionMode (not-supported | batch | transaction | both), searchParam (параметры поиска по всем ресурсам), operation (определение операций или пользовательских запросов), compartment (логические модули, используемые системой).

messaging — если описываем обмен сообщениями. Вложенные элементы: endpoint (протокол http | ftp | mllp + и адрес точки взаимодействия), reliableCache (время кеширования для безотказного обмена сообщениями (мин)), documentation (подробности работы интерфейса обмена сообщениями), event (тип события, категория 
Consequence | Currency | Notification, режим sender | receiver), тип ресурса, ссылка на профиль, описывающий запрос, ссылка на профиль, описывающий ответ, специфичная документация).

document — если описываем обмен документами. Вложенные элементы: mode (producer | consumer), documentation (описание), profile (ссылка на профиль).

Важные ограничивающие условия

Заявление о соответствии должно иметь хотя бы один из элементов rest, messaging или document.

Заявления о соответствии типа ‘requirements’ не имеют элементов software или implementation.

Заявления о соответствии типа ‘software’ не имеют элементов implementation.

Заявление о соответствии должно иметь хотя бы один из элементов description, software или implementation.

Точка взаимодействия обмена сообщениями messaging.endpoint требуется (и разрешена), только когда это заявление для реализации (тип ‘instance’).

Набор документов должен иметь уникальную комбинацию profile и mode.

Может быть только одно REST-объявление для одного режима.

Для Conformance.rest: один тип ресурса может быть описан для каждого RESTful-режима только один раз.

Пример

{
"resourceType": "Conformance",
"id": "example",
"text": {
"status": "generated",
"div": "<div><p>Сервер системы ведения ЭМК поддерживает следующие транзакции для ресурса Person: read, vread, update, history, search(name,gender) и create.</p><p>Система ведения ЭМК поддерживает следующий тип сообщений: admin-notify::Person.</p><p>Приложение ЭМК имеет <a href=\"http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796\">общий профиль документов</a>.</p></div>"
},
"url": "68D043B5-9ECF-4559-A57A-396E0D452311",
"_url": {
"fhir_comments": [
"Идентификатор этого заявления о соответствии. Идентификатор и версия образуют идентификаторы, которые другие спецификации могут использовать для отсылки к этому заявлению о соответствии, представленному с помощью данного ресурса, логическим образом, а не через URL. Это должен быть глобально уникальный идентификатор: UUID, OID или URL/URI."
]
},
"version": "20130510",
"name": "ACME EHR Conformance statement",
"status": "draft",
"experimental": true,
"date": "2016-05-12",
"publisher": "ACME Corporation",
"contact": [
{
"name": "System Administrator",
"telecom": [
{
"system": "email",
"value": "wile@acme.org"
}
]
}
],
"description": "Это FHIR-заявление о соответствии для системы ведения ЭМК в ACME для приватного интерфейса - оно не описывает публичный интерфейс",
"requirements": "Главное заявление о соответствии системы ведения ЭМК, опубликованное для оперативной поддержки",
"copyright": "Copyright © Acme Healthcare and GoodCorp EHR Systems",
"kind": "instance",
"software": {
"name": "EHR",
"version": "0.00.020.2134",
"releaseDate": "2012-01-04"
},
"implementation": {
"description": "main EHR at ACME",
"url": "http://10.2.3.4/fhir"
},
"fhirVersion": "1.0.0",
"_fhirVersion": {
"fhir_comments": [
" while the FHIR infrastructure is turning over prior to development, a version is required. Note that this may be rescinded later? "
]
},
"acceptUnknown": "both",
"_acceptUnknown": {
"fhir_comments": [
" данная система принимает неизвестные ей расширения и элементы в ресурсах "
]
},
"format": [
"xml",
"json"
],
"_format": [
{
"fhir_comments": [
" данная система может работать как с xml, так и с json. (Перечисление обоих форматов подразумевает полную поддержку каждого из них, включая взаимное преобразование) "
]
},
null
],
"rest": [
{
"fhir_comments": [
" маловероятно, что в реальном заявлении о соответствии будет задекларирована поддержка и REST, и обмена сообщениями, и документов, хотя это и допустимо. В данном примере это сделано в демонстрационных целях "
],
"mode": "server",
"_mode": {
"fhir_comments": [
" this is a server conformance statement. Note that servers are required to provide one of these. It can easily be edited by hand - copy this, replace the metadata above, delete the messaging and document stuff below, and then replace the details appropriately. "
]
},
"documentation": "Основная FHIR-точка взаимодействия acem health",
"security": {
"cors": true,
"_cors": {
"fhir_comments": [
" поддержка cors настоятельно рекомендуется и является обязательной при использовании SMART on FHIR "
]
},
"service": [
{
"coding": [
{
"system": "http://hl7.org/fhir/restful-security-service",
"code": "SMART-on-FHIR"
}
]
}
],
"description": "См. документацию по Smart on FHIR",
"certificate": [
{
"type": "application/jwt",
"blob": "IHRoaXMgYmxvYiBpcyBub3QgdmFsaWQ=",
"_blob": {
"fhir_comments": [
" base JWT. this blob is not valid "
]
}
}
]
},
"resource": [
{
"fhir_comments": [
" zero or more of these - declaration of support for a resource "
],
"type": "Patient",
"profile": {
"fhir_comments": [
" let's assume that HL7 has stood up a profile registry at http://fhir.hl7.org/fhir - it's likely to have a registry, though this is not decided, nor is a URL decided. This application simply uses a profile registered directly with HL7. For the simplest case of a FHIR REST Server, just delete this profile reference. Profile references do not need to be a UUID, though a profile registry could insist that they are "
],
"reference": "http://fhir.hl7.org/base/Profile7896271d-57f6-4231-89dc-dcc91eab2416"
},
"interaction": [
{
"code": "read"
},
{
"code": "vread",
"documentation": "Only supported for patient records since 12-Dec 2012"
},
{
"code": "update"
},
{
"code": "history-instance"
},
{
"code": "create"
},
{
"code": "history-type"
}
],
"versioning": "versioned-update",
"readHistory": true,
"updateCreate": false,
"_updateCreate": {
"fhir_comments": [
" this server doesn't let the clients create identities "
]
},
"conditionalCreate": true,
"_conditionalCreate": {
"fhir_comments": [
" it's good to support conditional create on patients; this solves a common middleware problem "
]
},
"conditionalUpdate": false,
"conditionalDelete": "not-supported",
"_conditionalDelete": {
"fhir_comments": [
" 0..1 If allows/uses conditional update "
]
},
"searchInclude": [
"Organization"
],
"searchRevInclude": [
"Person"
],
"searchParam": [
{
"name": "identifier",
"definition": "http://hl7.org/fhir/SearchParameter/Patient-identifier",
"type": "token",
"documentation": "Only supports search by institution MRN",
"modifier": [
"missing"
]
},
{
"name": "careprovider",
"definition": "http://hl7.org/fhir/SearchParameter/Patient-careprovider",
"type": "reference",
"target": [
"Organization"
],
"_target": [
{
"fhir_comments": [
" there's not a lot of value in saying this, since it's the only choice anyway. but in other cases it's pretty important "
]
}
],
"modifier": [
"missing"
],
"chain": [
"name",
"identifier"
]
}
]
}
],
"interaction": [
{
"code": "transaction"
},
{
"code": "history-system"
}
],
"compartment": [
"http://hl7.org/fhir/compartment/Patient"
]
}
],
"messaging": [
{
"fhir_comments": [
" a messaging conformance statement. Applications are not required to make a conformance statement with regard to messaging, though there is active argument that they should. "
],
"endpoint": [
{
"protocol": {
"system": "http://hl7.org/fhir/message-transport",
"code": "mllp"
},
"address": "mllp:10.1.1.10:9234",
"_address": {
"fhir_comments": [
" LLP server at 10.1.1.10 on port 9234 "
]
}
}
],
"reliableCache": 30,
"documentation": "ADT A08 equivalent for external system notifications",
"event": [
{
"code": {
"system": "http://hl7.org/fhir/message-type",
"code": "admin-notify"
},
"category": "Consequence",
"mode": "receiver",
"_mode": {
"fhir_comments": [
" this a receiver - i.e. answers. Not neccessariy a server (though this is) "
]
},
"focus": "Patient",
"request": {
"fhir_comments": [
" specify a profile for the request person. Very often there's no point profiling the response, it's not interesting "
],
"reference": "StructureDefinition/daf-patient"
},
"response": {
"reference": "StructureDefinition/MessageHeader"
},
"documentation": "Notification of an update to a patient resource. changing the links is not supported"
}
]
}
],
"document": [
{
"fhir_comments": [
" a document conformance statement "
],
"mode": "consumer",
"documentation": "Basic rules for all documents in the EHR system",
"profile": {
"fhir_comments": [
" this is the important element: a reference to a published document profile note that this is a version specific reference. "
],
"reference": "http://fhir.hl7.org/base/Profilebc054d23-75e1-4dc6-aca5-838b6b1ac81d/_history/b5fdd9fc-b021-4ea1-911a-721a60663796"
}
}
]
}