Руководство к использованию стандарта FHIR в ЦИСЗ
0.2.6803 - ci-build

Проверка пакета данных без импорта информации

Метод предназначен для проверки пакета медицинских данных на соответствие профилю пакета медицинских данных или пакета данных организации здравоохранения без его непосредственного импорта (сохранения) в ЦИСЗ.

Метод используется во время проектирования и разработки для проверки ресурсов на соответствие профилям.

ЦИСЗ может принимать Bundle:

  • соответствующий профилю MedicationDocument и только типа document;
  • соответствующий профилю OrganizationBundle и только типа transaction.

Bundle типа document:

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

Входящий ресурс Bundle типа document должен содержать:

  • Composition в качестве первого ресурса;

  • ресурсы, на которые ссылается Composition (должны содержать сведения о пациенте, состоянии здоровья пациента и виде оказанной медицинской помощи пациенту, в том числе сведения о медицинском работнике и организации, ответственных за подготовку, утверждение и хранение документа);

  • вспомогательные ресурсы, которые представляют дополнительные сведения о документе, и ссылки на них;

  • идентификатор документа с системой или значением;

  • дату создания документа (информацию о том, когда документ был создан в локальной или облачной МИС);

  • дату составления документа (информацию о том, когда медицинский работник составил документ в локальной или облачной МИС).

Подробная информация о ресурсе Bundle типа document размещена по адресу: documents.

Bundle типа transaction:

Ресурс Bundle типа transaction представляет собой ресурсы, размещенные в Bundle, с указанием действий (типов транзакций), которые необходимо произвести над каждым ресурсом в рамках одного HTTP запроса.

Входящий ресурс Bundle типа transaction должен содержать ресурсы, относящиеся к организации здравоохранения (например, расписание и слоты (по соответствующим профилям), сформированные в МИС ОЗ).

Ресурсы, передаваемые в Bundle типа transaction, должны соответствовать списку профилей, указанных в ограничениях профиля OrganizationBundle.

Подробная информация о ресурсе Bundle типа transaction размещена по адресу: TransactionBundle.

Вызов метода:

Вызов метода осуществляется с помощью HTTP POST команды:

POST [FHIR_BASE]/Bundle/$validate

Входные данные метода:

Название Профиль Описание
bundle пакет медицинских данных или пакет данных организации здравоохранения Пакет данных, сформированный локальной или облачной медицинской информационной системой

Выполнение операции с выбранной версией пакетов Для указания желаемой версии пакета профилей клиенты должны использовать заголовок X-Fhir-By-Version. Подробнее на странице о политике верий

Выходные данные метода:

Название Профиль Описание
result documents В случае успешной проверки пакета медицинских данных возвращается тип данных OperationOutcome со статусом success. В случае возникновения ошибки при проведении проверки пакета медицинских данных возвращается тип данных OperationOutcome со статусом error с детализацией ошибок по результатам пройденной проверки

Метод возвращает:

  • HTTP статус 200 ОК: проверка выполнена.

Метод возвращает HTTP статус 200 ОК независимо от того, соответствует ли переданный в метод пакет данных профилю пакета медицинских данных или пакета данных организации здравоохранения;

  • HTTP статус серии 4xx или 5xx: проверка не выполнена.

К сбою операции проверки могут привести ошибки в контенте (например, неверный набор символов, неверный JSON и т. д.).

Пример запроса на проверку пакета медицинских данных на соответствие профилю пакета медицинских данных без его непосредственного импорта (сохранения) в ЦИСЗ:

{ "resourceType": "Bundle", "id": "BundleFull", "meta": { "profile": [ "https://fhir.by/AbstractArea/StructureDefinition/Bundle/MedicationDocument" ] }, "identifier": { "system": "https://fhir.by/ValueSet/urn:ietf:rfc:3986", "value": "urn:uuid:0c3151bd-1cbf-4d64-b04d-cd9187a4c6t9" }, "type": "document", "timestamp": "2024-04-07T11:12:21Z", "entry": [ { "fullUrl": "Composition/CompositionFullBundle", "resource": { "resourceType": "Composition", "id": "CompositionFullBundle", "meta": { "profile": [ "https://fhir.by/StructureDefinition/CompDocument" ] }, "status": "registered", "type": { "coding": [ { "system": "https://fhir.by/ValueSet/CompositionType", "code": "general", "display": "Общая медицинская информация" } ] }, "subject": [ { "reference": "Patient/PatientFullBundle" } ], "encounter": { "reference": "Encounter/EncounterFullBundle" }, "date": "2024-04-07T11:12:21Z", "author": [ { "reference": "Practitioner/ExampleDoctor" } ], "title": "CompDocument для наполненного Bundle", "custodian": { "reference": "Organization/OrganizationCISM" }, "event": [ { "detail": [ { "reference": { "reference": "Condition/DiagnosisrFullBundle" } } ] }, { "detail": [ { "reference": { "reference": "Observation/HeightFullBundle" } } ] }, { "detail": [ { "reference": { "reference": "Observation/WeightFullBundle" } } ] }, { "detail": [ { "reference": { "reference": "Observation/BMIFullBundle" } } ] }, { "detail": [ { "reference": { "reference": "Observation/ArterialBloodPressureFullBundle" } } ] }, { "detail": [ { "reference": { "reference": "Observation/HeartRateFullBundle" } } ] }, { "detail": [ { "reference": { "reference": "Observation/TemperatureFullBundle" } } ] } ] } }, { "fullUrl": "Patient/PatientFullBundle", "resource": { "resourceType": "Patient", "id": "PatientFullBundle", "meta": { "profile": [ "https://fhir.by/StructureDefinition/PatientWithIdentificationNumber" ] }, "identifier": [ { "type": { "coding": [ { "system": "https://fhir.by/ValueSet/PersonalDocumentType", "code": "INP" } ] }, "value": "7001112A009PB3", "period": { "start": "2024-01-31" } }, { "extension": [ { "extension": [ { "url": "https://fhir.by/StructureDefinition/PassportIssuedString", "valueString": "Центральным РУВД г Минска, 11.08.2021" }, { "url": "https://fhir.by/StructureDefinition/PassportIssuedDate", "valueDate": "2021-08-11" }, { "url": "https://fhir.by/StructureDefinition/PassportIssuedCode", "valueCodeableConcept": { "coding": [ { "system": "https://fhir.by/ValueSet/OCAM", "code": "106" } ] } } ], "url": "https://fhir.by/StructureDefinition/PassportIssued" } ], "use": "usual", "type": { "coding": [ { "system": "https://fhir.by/ValueSet/PersonalDocumentType", "code": "Passport-RB" } ] }, "value": "MP1234579" } ], "active": true, "name": [ { "family": "Иванов", "given": [ "Василий", "Васильевич" ], "period": { "start": "2024-01-31" } } ], "telecom": [ { "system": "phone", "value": "89001234567" } ], "gender": "male", "birthDate": "1989-01-31", "deceasedBoolean": false, "address": [ { "extension": [ { "url": "https://fhir.by/StructureDefinition/CoutryForAddresses", "valueCodeableConcept": { "coding": [ { "system": "https://fhir.by/ValueSet/CitizenshipCode", "code": "BY", "display": "Беларусь" } ] } }, { "url": "https://fhir.by/StructureDefinition/StreetGeoRegistry", "valueCodeableConcept": { "coding": [ { "system": "https://fhir.by/ValueSet/StreetGeoRegistry", "code": "72609920778", "display": "Переулок Снежный" } ] } }, { "url": "https://fhir.by/StructureDefinition/ApartmetnRoom", "valueString": "кв. 11" } ], "use": "home", "text": "Могилевская область, г.Могилев, Переулок Гоголя, д.19", "postalCode": "212011" } ] } }, { "fullUrl": "Encounter/EncounterFullBundle", "resource": { "resourceType": "Encounter", "id": "EncounterFullBundle", "meta": { "profile": [ "https://fhir.by/StructureDefinition/EncounterGeneral" ] }, "status": "completed", "class": [ { "coding": [ { "system": "https://fhir.by/ValueSet/VSTermsOfService", "code": "1" } ] } ], "priority": { "coding": [ { "system": "https://fhir.by/ValueSet/HealthCareForms", "code": "emergency" } ] }, "type": [ { "coding": [ { "system": "https://fhir.by/ValueSet/TypeOfHealthCare", "code": "primary" } ] } ], "subject": { "reference": "Patient/PatientFullBundle", "display": "Иванов Василий Васильевич" }, "serviceProvider": { "reference": "Organization/OrganizationCISM" }, "participant": [ { "actor": { "reference": "PractitionerRole/ExampleTherapist", "display": "Филатов Олег Михайлович" } } ], "actualPeriod": { "start": "2024-04-07T11:12:21Z", "end": "2024-04-07T11:25:21Z" }, "diagnosis": [ { "condition": [ { "reference": { "reference": "Condition/DiagnosisrFullBundle" } } ], "use": [ { "coding": [ { "system": "https://fhir.by/ValueSet/TypeOfDiagnosis", "code": "mainDiagnosis" } ] } ] } ] } }, { "fullUrl": "Condition/DiagnosisrFullBundle", "resource": { "resourceType": "Condition", "id": "DiagnosisrFullBundle", "meta": { "profile": [ "https://fhir.by/StructureDefinition/FinalDiagnosis" ] }, "extension": [ { "url": "https://fhir.by/StructureDefinition/KindOfDiagnosis", "valueCodeableConcept": { "coding": [ { "system": "https://fhir.by/ValueSet/KindOfDiagnosisCode", "code": "Final" } ] } }, { "url": "https://fhir.by/StructureDefinition/AssertedDate", "valueDateTime": "2024-04-07" } ], "clinicalStatus": { "coding": [ { "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "active" } ] }, "code": { "coding": [ { "system": "https://fhir.by/ValueSet/InternClassificDiseases10", "code": "E11" } ], "text": "E11 - Сахарный диабет 2 типа" }, "subject": { "reference": "Patient/PatientFullBundle", "display": "Иванов Василий Васильевич" }, "onsetDateTime": "2024-04-07", "recordedDate": "2024-04-07", "participant": [ { "actor": { "reference": "PractitionerRole/ExampleTherapist", "display": "Филатов Олег Михайлович" } } ] } }, { "fullUrl": "Observation/HeightFullBundle", "resource": { "resourceType": "Observation", "id": "HeightFullBundle", "meta": { "profile": [ "https://fhir.by/StructureDefinition/AnthropometricDataBy" ] }, "status": "registered", "category": [ { "coding": [ { "code": "exam", "userSelected": false } ] } ], "code": { "coding": [ { "system": "https://fhir.by/ValueSet/AnthropoMetricCodes", "code": "body-height" } ] }, "subject": { "reference": "Patient/PatientFullBundle", "display": "Иванов Василий Васильевич" }, "encounter": { "reference": "Encounter/EncounterFullBundle" }, "effectiveDateTime": "2024-04-07T11:12:21Z", "performer": [ { "reference": "PractitionerRole/ExampleTherapist", "display": "Филатов Олег Михайлович" } ], "valueQuantity": { "value": 180, "unit": "cm", "system": "http://unitsofmeasure.org", "code": "cm" } } }, { "fullUrl": "Observation/WeightFullBundle", "resource": { "resourceType": "Observation", "id": "WeightFullBundle", "meta": { "profile": [ "https://fhir.by/StructureDefinition/AnthropometricDataBy" ] }, "status": "registered", "category": [ { "coding": [ { "code": "exam", "userSelected": false } ] } ], "code": { "coding": [ { "system": "https://fhir.by/ValueSet/AnthropoMetricCodes", "code": "body-weight" } ] }, "subject": { "reference": "Patient/PatientFullBundle", "display": "Иванов Василий Васильевич" }, "encounter": { "reference": "Encounter/EncounterFullBundle" }, "effectiveDateTime": "2024-04-07T11:12:21Z", "performer": [ { "reference": "PractitionerRole/ExampleTherapist", "display": "Филатов Олег Михайлович" } ], "valueQuantity": { "value": 90, "unit": "kg", "system": "http://unitsofmeasure.org", "code": "kg" } } }, { "fullUrl": "Observation/BMIFullBundle", "resource": { "resourceType": "Observation", "id": "BMIFullBundle", "meta": { "profile": [ "https://fhir.by/StructureDefinition/AnthropometricDataBy" ] }, "status": "registered", "category": [ { "coding": [ { "code": "exam", "userSelected": false } ] } ], "code": { "coding": [ { "system": "https://fhir.by/ValueSet/AnthropoMetricCodes", "code": "body-mass-index" } ] }, "subject": { "reference": "Patient/PatientFullBundle", "display": "Иванов Василий Васильевич" }, "encounter": { "reference": "Encounter/EncounterFullBundle" }, "effectiveDateTime": "2024-04-07T11:12:21Z", "performer": [ { "reference": "PractitionerRole/ExampleTherapist", "display": "Филатов Олег Михайлович" } ], "valueQuantity": { "value": 30 } } }, { "fullUrl": "Observation/ArterialBloodPressureFullBundle", "resource": { "resourceType": "Observation", "id": "ArterialBloodPressureFullBundle", "meta": { "profile": [ "https://fhir.by/StructureDefinition/VitalSignsBy" ] }, "status": "registered", "category": [ { "coding": [ { "code": "vital-signs", "userSelected": false } ] } ], "code": { "coding": [ { "system": "https://fhir.by/ValueSet/VitalSignsCodes", "code": "arterial-blood-pressure" } ] }, "subject": { "reference": "Patient/PatientFullBundle", "display": "Иванов Василий Васильевич" }, "encounter": { "reference": "Encounter/EncounterFullBundle" }, "effectiveDateTime": "2024-04-07T11:12:21Z", "performer": [ { "reference": "PractitionerRole/ExampleTherapist", "display": "Филатов Олег Михайлович" } ], "component": [ { "code": { "coding": [ { "system": "https://fhir.by/ValueSet/VitalSignsCodes", "code": "systolic-arterial-blood-pressure" } ] }, "valueQuantity": { "value": 140, "unit": "mm[Hg]", "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } }, { "code": { "coding": [ { "system": "https://fhir.by/ValueSet/VitalSignsCodes", "code": "diastolic-arterial-blood-pressure" } ] }, "valueQuantity": { "value": 95, "unit": "mm[Hg]", "system": "http://unitsofmeasure.org", "code": "mm[Hg]" } } ] } }, { "fullUrl": "Observation/HeartRateFullBundle", "resource": { "resourceType": "Observation", "id": "HeartRateFullBundle", "meta": { "profile": [ "https://fhir.by/StructureDefinition/VitalSignsBy" ] }, "status": "registered", "category": [ { "coding": [ { "code": "vital-signs", "userSelected": false } ] } ], "code": { "coding": [ { "system": "https://fhir.by/ValueSet/VitalSignsCodes", "code": "heart-rate" } ] }, "subject": { "reference": "Patient/PatientFullBundle", "display": "Иванов Василий Васильевич" }, "encounter": { "reference": "Encounter/EncounterFullBundle" }, "effectiveDateTime": "2024-04-07T11:12:21Z", "performer": [ { "reference": "PractitionerRole/ExampleTherapist", "display": "Филатов Олег Михайлович" } ], "valueQuantity": { "value": 80, "unit": "/min", "system": "http://unitsofmeasure.org", "code": "/min" } } }, { "fullUrl": "Observation/TemperatureFullBundle", "resource": { "resourceType": "Observation", "id": "TemperatureFullBundle", "meta": { "profile": [ "https://fhir.by/StructureDefinition/VitalSignsBy" ] }, "status": "registered", "category": [ { "coding": [ { "code": "vital-signs", "userSelected": false } ] } ], "code": { "coding": [ { "system": "https://fhir.by/ValueSet/VitalSignsCodes", "code": "body-temperature" } ] }, "subject": { "reference": "Patient/PatientFullBundle", "display": "Иванов Василий Васильевич" }, "encounter": { "reference": "Encounter/EncounterFullBundle" }, "effectiveDateTime": "2024-04-07T11:12:21Z", "performer": [ { "reference": "PractitionerRole/ExampleTherapist", "display": "Филатов Олег Михайлович" } ], "valueQuantity": { "value": 36.5, "unit": "Cel", "system": "http://unitsofmeasure.org", "code": "Cel" } } } ] }

Пример ответа в случае возникновения ошибки при проведении проверки входящего пакета медицинских данных на соответствие профилю пакета медицинских данных:

{ "resourceType": "OperationOutcome", "id": "cb97a66a-c6a5-4445-8cde-09f4d97d3950", "meta": { "lastUpdated": "2024-05-10T09:20:30.9466591+00:00" }, "issue": [ { "severity": "error", "code": "invariant", "details": { "coding": [ { "system": "http://hl7.org/fhir/dotnet-api-operation-outcome", "code": "1012" }, { "system": "http://fire.ly/dotnet-sdk-operation-outcome-structdef-reference", "code": "Bundle(https://fhir.by/AbstractArea/StructureDefenition/Bundle/MedicationDocument)" } ], "text": "Instance failed constraint bdl-11 \"A document must have a Composition as the first resource\"" }, "expression": [ "Bundle, element Bundle(https://fhir.by/AbstractArea/StructureDefenition/Bundle/MedicationDocument)" ] } ] }
▲ Вверх