Руководство к использованию стандарта FHIR в ЦИСЗ
0.2.6803 - ci-build
Поскольку вся структурированная медицинская информация, передаваемая из других информационных систем (ресурсов) в здравоохранении, должна соответствовать содержимому регистров, справочников и классификаторов подсистемы нормативно-справочной информации, происходит валидация пакета медицинских данных (Bundle) на соответствие регистру медицинских работников.
Регистр медицинских работников содержит актуальную информацию о медицинских работниках сферы здравоохранения Республики Беларусь.
МИС обращается для получения актуальной информации о медицинском работнике в модуль «Регистр медицинских работников» (модуль является составной частью подсистемы НСИ).
Регистр медицинских работников содержит информацию о медицинском работнике, как о физическом лице, в виде ресурса, соответствующего профилю Медицинский работник. В этом ресурсе представлены персональные данные медицинского работника (ФИО, дата рождения, адрес регистрации), данные об образовании и другая информация. Не может существовать несколько ресурсов Медицинский работник для одного физического лица. Также в регистре размещены ресурсы, соответствующие профилю Роль медицинского работника. В этих ресурсах представлена информация о должности, занимаемой медицинским работником в конкретной организации, в конкретный промежуток времени, с указанием должностных обязанностей, информацией о занимаемой ставке. Ресурс Роль медработника всегда связан с ресурсом Медицинский работник. Для одного физического лица может быть несколько ресурсов Роль медработника. Для ресурсов, использующихся в обмене с ЦИСЗ в большинстве случаев применяется ресурс Роль медицинского работника для точного указания специалиста и его роли в конкретный момент оказания медицинской помощи.
Отправлять данные в ЦИСЗ может сотрудник, у которого в Регистре медицинских работников создана карточка в виде ресурса Медицинский работник и как минимум одного ресурса Роль медицинского работника.
Правила, описывающие применения ссылок на ресурсы из Регистра медицинских работников, размещены в этом руководстве в полных схемах для профилей ресурсов.
Для взаимодействия с регистром медицинских работников клиентам доступны следующие методы:
Для взаимодействия с регистром медицинских работников необходимо пройти аутентификацию одним из способов, описанных на странице
Медицинский работник вносит в МИС набор медицинских данных о пациенте, включая сведения о медицинском наблюдении за пациентом и оказанных услугах. На основе данной информации МИС формирует пакет медицинских данных в виде ресурса Bundle.
После формирования пакета медицинских данных о пациенте выполняется его передача в ЦИСЗ с помощью метода импорта пакета медицинской информации о пациенте. Пакет медицинских данных о пациенте передается в подсистему интегрированной электронной медицинской карты пациента (ИЭМК), где выполняется валидация на соответствие профилям ЦИСЗ, включая проверку на соответствие переданных из МИС значений справочников подсистеме нормативно-справочной информации (НСИ).
При успешной валидации информация сохраняется в подсистеме ИЭМК и используется другими подсистемами ЦИСЗ.
Если в процессе валидации были обнаружены ошибки при проверке соответствия переданных из МИС значений справочников подсистеме НСИ, то пакет медицинской информации о пациенте отклоняется и передача информации из МИС в ЦИСЗ считается неуспешной.
Метод получения обеспечивает доступ к текущему содержимому ресурса c информацией о медицинском работнике. Взаимодействие выполняется с помощью HTTP
GET команды:
GET [FHIR_BASE]/Practitioner/[id]
Метод возвращает один экземпляр ресурса.
Возможные
значения
логического идентификатора («id») описаны
в типе
Id
При попытке доступа к несуществующему ресурсу будет возвращен HTTP статус код - 404 Not Found
Метод получения обеспечивает доступ к текущему содержимому ресурса c информацией о роли медицинского работника. Взаимодействие выполняется с помощью HTTP
GET команды:
GET [FHIR_BASE]/PractitionerRole/[id]
Метод возвращает один экземпляр ресурса.
Возможные
значения
логического идентификатора («id») описаны
в типе
Id
При попытке доступа к несуществующему ресурсу будет возвращен HTTP статус код - 404 Not Found
Во всех поисковых взаимодействиях в этом руководстве используется HTTP GET команда со следующим
синтаксисом:
GET [FHIR_BASE]/[Resource-type]?[parameter1]{:m1|m2|...}={c1|c2|...}[value1{,value2,...}]{&[parameter2]{:m1|m2|...}={c1|c2|...}[value1{,value2,...}]&...}
GET — это HTTP метод, используемый для получения ресурса.
Переменные указанные в «[]», обязательны для предоставления клиентом и будут заменены указанным строковым литералом.
Переменные указанные в «{}», не являются обязательными для предоставления клиентом и будут заменены указанным строковым литералом.
FHIR_BASE: URL-адрес сервера
Resource-type: имя типа ресурса (например, “Practitioner”).
parameter: параметры поиска, определенные для конкретного взаимодействия (например, «?practitioner=Practitioner/01»).
value: значение параметра поиска
{:m1 m2 …}: модификатор параметра поиска
{c1 c2 …}: компаратор параметра поиска
{,value2,…}: логическое ИЛИ
{¶meter2={:m1 m2 …}={c1 c2 …}[value1{,value2,…}]&…}: логическое И
Простой пример запроса поиска в RESTful с использованием HTTP GET команды:
GET [FHIR_BASE]/Practitioner?name=value&...
| Параметр поиска | Тип | Описание | Выражение | Пример |
|---|---|---|---|---|
| _id | token | По логическому идентификатору | Practitioner.id | GET [FHIR_BASE]/Practitioner?_id=123456 |
| _profile | reference | По профилю медицинского работника | Practitioner.meta.profile | GET [FHIR_BASE]/Practitioner?_profile=https://fhir.by/StructureDefinition/PractitionerBy |
| active | token | Активна ли запись о медицинском работнике | Practitioner.active | GET [FHIR_BASE]/Practitioner?_id=123456&active=true |
| address | string | Определенный сервером поиск, который может соответствовать любому из строковых полей адреса, включая строку, город, район, область, страну, почтовый индекс и/или текст | Practitioner.address | GET [FHIR_BASE]/Practitioner?address=Минск |
| death-date | date | Дата смерти, которая удовлетворяет данному параметру поиска | (Practitioner.deceased.ofType(dateTime)) | GET [FHIR_BASE]/Practitioner?death-date=1997-09-09 |
| deceased | token | Этот практикующий врач был отмечен как умерший или у него была указана дата смерти | Practitioner.deceased.exists() and Practitioner.deceased != false | GET [FHIR_BASE]/Practitioner?deceased=true |
| token | Значение в контакте по электронной почте | Practitioner.telecom.where(system=’email’) | GET [FHIR_BASE]/Practitioner?email=doc@mail.by |
|
| family | string | Часть фамилии | Practitioner.name.family | GET [FHIR_BASE]/Practitioner?family=Иванов |
| gender | token | Пол практикующего врача | Practitioner.gender | GET [FHIR_BASE]/Practitioner?gender=female |
| given | string | Имя и/или отчество врача | Practitioner.name.given | GET [FHIR_BASE]/Practitioner?given=Петр Васильевич |
| identifier | token | Идентификационный номер практикующего врача | Practitioner.identifier | Practitioner.qualification.identifier | GET [FHIR_BASE]/Practitioner?identifier=14405А58957 |
| name | string | Определенный сервером поиск, который может соответствовать любому из строковых полей в имени пользователя, включая семейство, имя, префикс, суффикс-приставку и/или текст | Practitioner.name | GET [FHIR_BASE]/Practitioner?name=Юдин Дмитрий Олегович |
| phone | token | Значение в телефонном контакте | Practitioner.telecom.where(system=’phone’) | GET [FHIR_BASE]/Practitioner?phone=8025289098989 |
| phonetic | string | Часть фамилии или имени, использующая какой-либо алгоритм фонетического сопоставления | Practitioner.name | GET [FHIR_BASE]/Practitioner?phonetic=Иванов |
| telecom | token | Значение любого рода контактов | Practitioner.telecom | GET [FHIR_BASE]/Practitioner?telecom=doc@mail.by |
GET [FHIR_BASE]/Practitioner?_id=123- возвращает медицинского работника с логическим идентификатором 123
GET [FHIR_BASE]/Practitioner?_id=123,321- возвращает медицинского работника с логическими идентификаторами 123 ИЛИ 321
GET [FHIR_BASE]/Practitioner?_id=123&_id=321- возвращает пустой список медицинских работников - применение логического И в данном случае не имеет смысла, но поддерживается системой
Учитывая, что логический идентификатор уникален, поиск по логическому идентификатору всегда приведет к нулю или единице записей. Во многих отношениях поиск функционально эквивалентен простому методу получения ресурса. Однако есть некоторые различия в использовании поиска вместо чтения:
Операции поиска всегда возвращают ресурс Bundle.
Если логический идентификатор существует и ресурс может быть возвращен, результатом будет Bundle, содержащий ресурс, а не сам ресурс.
Если логический идентификатор не существует или не может быть возвращен, результатом действительного поиска все равно будет Bundle. Bundle МОЖЕТ включать дополнительную информацию в форме OperationOutcome.
Доступен дополнительный функционал поиска. Например, запрос ресурса «Practitioner» по логическому идентификатору, а также установка критериев поиска identifier вернет медицинского работника только в том случае, если идентификатор совпал.
Параметр поиска _profile используется для сопоставления ресурсов на основе значений в элементе
Resource.meta.profile
Параметр поиска _profile определяется как параметр ссылочного типа.
GET [FHIR_BASE]/Practitioner?_profile=http://fhir.by/StructureDefinition/PractitionerBy
НЕ допускается использование ТОЛЬКО параметра поиска _profile, ДОЛЖЕН использоваться ТОЛЬКО в комбинации с каким-либо другим параметром поиска (_id, name)
Параметр поиска identifier определяется как параметр типа token.
Примеры поиска по идентификатору:
GET [FHIR_BASE]/Practitioner?identifier:of-type=http://fhir.by/api/term/ValueSet/PersonalDocumentType|INP|4310587A055PB9 -
возвращает медицинских работников у которых Идентификационный номер равен 4310587A055PB9
GET [FHIR_BASE]/Practitioner?identifier=4310587A055PB9 -
возвращает медицинских работников у которых идентификатор любого типа равен 4310587A055PB9
Во всех поисковых взаимодействиях в этом руководстве используется HTTP GET команда со следующим синтаксисом:
GET [FHIR_BASE]/[Resource-type]?[parameter1]{:m1|m2|...}={c1|c2|...}[value1{,value2,...}]{&[parameter2]{:m1|m2|...}={c1|c2|...}[value1{,value2,...}]&...}
GET — это HTTP метод, используемый для получения ресурса.
Переменные указанные в «[]», обязательны для предоставления клиентом и будут заменены указанным строковым литералом.
Переменные указанные в «{}», не являются обязательными для предоставления клиентом и будут заменены указанным строковым литералом.
Resource-type: имя типа ресурса (например, “PractitionerRole”).
parameter: параметры поиска, определенные для конкретного взаимодействия (например, «?practitionerRole=PractitionerRole/01»).
value: значение параметра поиска
{:m1 m2 …}: модификатор параметра поиска
{c1 c2 …}: компаратор параметра поиска
{,value2,…}: логическое ИЛИ
{¶meter2={:m1 m2 …}={c1 c2 …}[value1{,value2,…}]&…}: логическое И
Простой пример запроса поиска в RESTful с использованием HTTP GET команды:
GET [FHIR_BASE]/PractitionerRole?role=value&...
| Параметр поиска | Тип | Описание | Выражение | Пример |
|---|---|---|---|---|
| _id | token | По логическому идентификатору | PractitionerRole.id | GET [FHIR_BASE]/PractitionerRole?_id=123456 |
| _profile | reference | По профилю медицинского работника | PractitionerRole.meta.profile | GET [FHIR_BASE]/PractitionerRole?_profile=https://fhir.by/StructureDefinition/PractitionerRoleBy |
| active | token | Активно ли используется эта запись о роли практикующего врача | PractitionerRole.active | GET [FHIR_BASE]/PractitionerRole?active=true |
| date | date | Период, в течение которого практикующий специалист уполномочен выполнять эти функции | PractitionerRole.period | GET [FHIR_BASE]/PractitionerRole?date=2024-08-01 |
| token | Адрес электронной почты | PractitionerRole.contact.telecom.where(system=’email’) | GET [FHIR_BASE]/PractitionerRole?email=practitioner@mail.by |
|
| location | reference | Одно из мест, где этот практикующий врач оказывает медицинскую помощь | PractitionerRole.location(Location) | GET [FHIR_BASE]/PractitionerRole?location=surgery.1 |
| organization | reference | Название организации, которую представляет практикующий специалист или от имени которой он действует | PractitionerRole.organization(Organization) | GET [FHIR_BASE]/PractitionerRole?organization=Organization/12345678901234 |
| phone | token | Номер телефона | PractitionerRole.contact.telecom.where(system=’phone’) | GET [FHIR_BASE]/PractitionerRole?phone=80298901234 |
| practitioner | reference | Практикующий специалист, способный предоставлять определенные услуги для организации | PractitionerRole.practitioner(Practitioner) | GET [FHIR_BASE]/PractitionerRole?practitioner=Practitioner/0009 |
| role | token | Практикующий специалист может выполнять эту роль в организации | PractitionerRole.code | GET [FHIR_BASE]/PractitionerRole?role=director |
| position-rate | token | Поисковый параметр для занимаемой ставки работника | PractitionerRole.extension(‘https://fhir.by/StructureDefinition/PractitionerPosition’).extension(‘https://fhir.by/StructureDefinition/PractitionerPositionRate’).value.as(CodeableConcept).coding.code | GET [FHIR_BASE]/PractitionerRole?position-rate=4 |
| identifier | token | Идентификационный номер практикующего врача | PractitionerRole.identifier | GET [FHIR_BASE]/PractitionerRole?identifier=000001101 |
GET [FHIR_BASE]/PractitionerRole?_id=123- возвращает медицинского работника с логическим идентификатором 123
GET [FHIR_BASE]/PractitionerRole?_id=123,321- возвращает медицинского работника с логическими идентификаторами 123 ИЛИ 321
GET [FHIR_BASE]/PractitionerRole?_id=123&_id=321- возвращает
пустой список медицинских работников - применение логического И в данном случае не имеет смысла, но поддерживается системой
Учитывая, что логический идентификатор уникален, поиск по логическому идентификатору всегда приведет к нулю или единице записей. Во многих отношениях поиск функционально эквивалентен простому методу получения ресурса. Однако есть некоторые различия в использовании поиска вместо чтения:
Операции поиска всегда возвращают ресурс Bundle.
Если логический идентификатор существует и ресурс может быть возвращен, результатом будет Bundle, содержащий ресурс, а не сам ресурс.
Если логический идентификатор не существует или не может быть возвращен, результатом действительного поиска все равно будет Bundle. Bundle МОЖЕТ включать дополнительную информацию в форме OperationOutcome.
Доступен дополнительный функционал поиска. Например, запрос ресурса «PractitionerRole» по логическому идентификатору, а также установка критериев поиска identifier вернет медицинского работника только в том случае, если идентификатор совпал.
Параметр поиска _profile используется для сопоставления ресурсов на основе значений в элементе Resource.meta.profile
Параметр поиска _profile определяется как параметр ссылочного типа.
GET [FHIR_BASE]/PractitionerRole?_profile=https://fhir.by/StructureDefinition/PractitionerRoleBy
НЕ допускается использование ТОЛЬКО параметра поиска _profile, ДОЛЖЕН использоваться ТОЛЬКО в комбинации с каким-либо другим параметром поиска (_id, name)
Параметр поиска role определяется как параметр типа token.
Примеры поиска по роли роли медицинского работника:
GET [FHIR_BASE]/PractitionerRole?role=general-practitioner
Параметр поиска practitioner определяется как параметр типа reference.
Примеры поиска по идентификатору:
GET [FHIR_BASE]/PractitionerRole?practitioner=93e9572a-6051-11ef-8116-f4e5db6d3a96 - возвращает роли медицинских работников, у которых медицинский работник имеет логический идентификатор 93e9572a-6051-11ef-8116-f4e5db6d3a96
GET [FHIR_BASE]/PractitionerRole?practitioner=93e9572a-6051-11ef-8116-f4e5db6d3a96,94783036-6051-11ef-8116-f4e5db6d3a96 - возвращает роли медицинских работников, у которых медицинские работники имеют логические идентификаторы 93e9572a-6051-11ef-8116-f4e5db6d3a96, 94783036-6051-11ef-8116-f4e5db6d3a96