Единая платформа цифрового здравоохранения Узбекистана
0.7.0 - ci-build
Uzbekistan Digital Health Platform - Локальная сборка (v0.7.0), построенная FHIR (HL7® FHIR® Стандартные инструменты сборки. Смотрите каталог опубликованных версий
На этой странице представлены переводы с языка оригинала, на котором былонаписано руководство. Информацию об этих переводах и инструкции попредоставлению отзывов о переводах можно найти здесь.
В этом рабочем процессе показано, как национальный календарь вакцинации используется для формирования персонализированной рекомендации, как пациент проходит этапы записи, консультации и визита для вакцинации и как регистрируется введённая доза вакцины. Все используемые здесь ресурсы профилированы в UZ Core.
Участники: руководитель программы вакцинации / ответственный за управление данными (ведёт календарь); медицинский регистратор (записывает пациента); пациент или родитель/законный представитель (просматривает рекомендации); врач и медсестра (оценивают возможность проведения вакцинации и вводят вакцину). Клинические визиты представлены в FHIR ресурсами Encounter: один Encounter для консультации и отдельный Encounter для вакцинации.
Последовательность процесса:
Национальный календарь вакцинации публикуется в виде одного ресурса PlanDefinition. Каждая рекомендуемая доза представлена отдельным PlanDefinition.action; сведения о вакцине и дозировании задаются в action через definitionCanonical, содержащий reference на ActivityDefinition. Целевой возраст или расписание задаётся в action.timing[x] (Age или Timing); минимальные интервалы между дозами задаются в action.relatedAction.offsetDuration; критерии применимости - в action.condition.
GET [base]/PlanDefinition?status=active&context-type-value=focus$http://snomed.info/sct|33879002
Для каждой области применения или юрисдикции одновременно может быть активна только одна версия календаря. Календарь должен соответствовать правилам валидации: без пропусков в последовательности доз, недопустимых временных интервалов и двух пересекающихся активных версий. См. страницу PlanDefinition.
Механизм формирования рекомендаций анализирует активный PlanDefinition, имеющуюся историю Immunization пациента и его демографические данные, после чего формирует ImmunizationRecommendation. Каждая запись содержит vaccineCode и/или targetDisease, doseNumber, forecastStatus (due, overdue, …) и dateCriterion (наиболее ранняя, рекомендуемая и наиболее поздняя даты).
# получить актуальные рекомендации для пациента
GET [base]/ImmunizationRecommendation?patient=Patient/[id]&_sort=-date
# получить уже введённые дозы
GET [base]/Immunization?patient=Patient/[id]&status=completed
Рекомендация обычно рассчитывается механизмом на основе календаря и истории пациента - клиентские системы отображают её. Во время консультации медицинский работник также может просмотреть рекомендацию или создать её, если механизм её не сформировал.
Медицинская помощь оказывается в рамках Encounter. Запись пациента и консультация проводятся в рамках одного консультационного Encounter, который сохраняется на протяжении всего визита и чей status меняется по мере прохождения его этапов. Для каждого медицинского работника новый Encounter не создаётся:
status = planned. subject указывает на пациента, serviceProvider - на клинику, а participant содержит регистратора и назначенную медсестру. После этого пациент появляется в рабочем списке этой медсестры.status = in-progress, указывая reason визита и actualPeriod.Encounter.reason reference на эту рекомендацию. По завершении консультации Encounter переводится в status = completed.# регистратор записывает пациента (консультационный Encounter)
POST [base]/Encounter
{
"resourceType": "Encounter",
"meta": { "profile": ["https://dhp.uz/fhir/core/StructureDefinition/uz-core-encounter"] },
"status": "planned",
"subject": { "reference": "Patient/[id]" },
"serviceProvider": { "reference": "Organization/[clinic]" },
"participant": [{ "actor": { "reference": "Practitioner/[nurse]" } }]
}
# медсестра открывает визит
PUT [base]/Encounter/[id] # status -> in-progress, заполнить reason и actualPeriod
# врач связывает рекомендацию и завершает консультацию
PUT [base]/Encounter/[id] # reason -> ImmunizationRecommendation, status -> completed
Вакцинация обычно проводится в другом учреждении и в другой день, чем консультация, поэтому она регистрируется в отдельном Encounter, а не в консультационном. Для введения вакцины медсестра открывает этот Encounter для вакцинации (status = in-progress), а затем регистрирует ресурс Immunization, который ссылается на него через Immunization.encounter и на рекомендацию через Immunization.basedOn. Исход указывается в status:
| Исход | Immunization.status |
Также заполнить |
|---|---|---|
| Вакцина введена | completed |
occurrence, vaccineCode, administeredProduct, lotNumber, doseQuantity, performer |
| Медицинский отвод | not-done |
statusReason = MEDPREC (медицинское противопоказание) или IMMUNE (наличие иммунитета) |
| Отказ | not-done |
statusReason = PATOBJ (отказ пациента) |
| Препарат отсутствует | not-done |
statusReason = OSTOCK (препарат отсутствует в наличии) |
| Запись создана ошибочно | entered-in-error |
- |
statusReason имеет обязательную привязку (required) к ValueSet причин статуса Immunization; перечисленные выше четыре кода из HL7 v3 ActReason являются единственными допустимыми значениями.
POST [base]/Immunization
{
"resourceType": "Immunization",
"meta": { "profile": ["https://dhp.uz/fhir/core/StructureDefinition/uz-core-immunization"] },
"status": "completed",
"vaccineCode": { "coding": [{ "system": "http://hl7.org/fhir/sid/cvx", "code": "03" }] },
"patient": { "reference": "Patient/[id]" },
"encounter": { "reference": "Encounter/[vaccination-encounter-id]" },
"basedOn": [{ "reference": "ImmunizationRecommendation/[id]" }],
"occurrenceDateTime": "2026-05-30",
"lotNumber": "AB-2231",
"performer": [{ "actor": { "reference": "PractitionerRole/[id]" } }],
"protocolApplied": [{ "doseNumberPositiveInt": 1 }]
}
Доза однозначно идентифицируется комбинацией patient + vaccineCode + occurrence + lotNumber. Не отправляйте одну и ту же комбинацию повторно.
Если у пациента возникла реакция после вакцинации, зарегистрируйте ресурс AdverseEvent, в котором suspectEntity содержит reference на Immunization, и при необходимости добавьте Observation с описанием реакции.