Единая платформа цифрового здравоохранения Узбекистана
0.5.0 - ci-build Uzbekistan флаг

Uzbekistan Digital Health Platform - Локальная сборка (v0.5.0), построенная FHIR (HL7® FHIR® Стандартные инструменты сборки. Смотрите каталог опубликованных версий

Immunization

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

Машинный перевод, требуется проверка человеком. Эта страница автоматически переведена с английского языка с помощью искусственного интеллекта и пока не проверена редактором. При любых расхождениях приоритет имеет оригинальная англоязычная версия.

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

Участники: менеджер программы иммунизации / распорядитель данных (поддерживает календарь); медицинский регистратор (записывает пациента); пациент или родитель/опекун (просматривает рекомендации); врач и медсестра (оценивают показания и проводят вакцинацию). Клинические визиты передаются как ресурсы FHIR Encounter — один визит-консультация и отдельный визит-вакцинация.

Цепочка:

National schedule to recorded doseProgrammanagerProgrammanagerRegistrarRegistrarDoctorDoctorNurseNurseDHP(recommendation engine)DHP(recommendation engine)1publishPlanDefinition(national schedule)one active scheduleper jurisdiction2POSTEncounter1 - consult(status = planned; subject = patient;participant = nurse; serviceProvider = clinic)3PUT Encounter 1 (status = in-progress)primary intake, sets reason4GETImmunizationRecommendation?patient=[id]engine reads PlanDefinition+ Immunization history+ patient demographics5ImmunizationRecommendation(due / overdue, dose number)6PUT Encounter 1 (status = completed)assess eligibility; reason -> ImmunizationRecommendation7POST Encounter 2 - vaccination(status = in-progress)8POSTImmunization(encounter -> Encounter 2; basedOn -> ImmunizationRecommendation;status = completed | not-done)opt[reaction occurs]9POSTAdverseEvent(suspectEntity -> Immunization) +Observation


1. Календарь как код

Национальный календарь публикуется один раз в виде PlanDefinition. Каждая рекомендованная доза — это PlanDefinition.action; вакцина и сведения о дозировании переносятся в действие через definitionCanonical, ссылающийся на ActivityDefinition, либо через национальные расширения (doseSequence, maximumInterval, gracePeriod). Минимальные интервалы между дозами используют action.relatedAction.offsetDuration; показания используют action.condition.

GET [base]/PlanDefinition?status=active&context-type-value=focus$http://snomed.info/sct|33879002

Для данной области/юрисдикции одновременно может быть активна только одна версия календаря, и календарь должен удовлетворять правилам валидации (отсутствие пропусков в последовательности доз, отсутствие невозможных временных окон, отсутствие двух перекрывающихся активных версий). См. страницу PlanDefinition.

2. Формирование рекомендации

Механизм рекомендаций считывает активный PlanDefinition, существующую историю Immunization пациента и демографические данные пациента и формирует ImmunizationRecommendation. Каждая запись содержит vaccineCode и/или targetDisease, doseNumber, forecastStatus (предстоит, просрочено, …) и dateCriterion (самая ранняя/рекомендованная/самая поздняя даты).

# read what a patient is due for
GET [base]/ImmunizationRecommendation?patient=Patient/[id]&_sort=-date

# read the doses already given
GET [base]/Immunization?patient=Patient/[id]&status=completed

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

3. Визит-консультация

Медицинская помощь оказывается в рамках Encounter. Запись и консультация используют один долгоживущий визит-консультацию, чей status меняется по мере прохождения визита — для каждого медработника новый Encounter не создаётся:

  • Медицинский регистратор записывает пациента и создаёт Encounter со status = planned. subject — это пациент, serviceProvider — клиника, а participant содержит регистратора и назначенную медсестру. Пациент теперь появляется в рабочем списке этой медсестры.
  • Медсестра открывает визит для первичного приёма и обновляет тот же Encounter до status = in-progress, фиксируя reason визита и actualPeriod.
  • Семейный врач осматривает пациента в рамках того же Encounter, просматривает или создаёт ImmunizationRecommendation и связывает её, устанавливая Encounter.reason как ссылку на эту рекомендацию. По завершении консультации Encounter переходит в status = completed.
# registrar books the patient (consultation 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]" } }]
}

# nurse opens the visit
PUT [base]/Encounter/[id]    # status -> in-progress, set reason, actualPeriod

# doctor links the recommendation and closes the consult
PUT [base]/Encounter/[id]    # reason -> ImmunizationRecommendation, status -> completed

4. Введение дозы

Вакцинация обычно проходит в другом учреждении и в другой день, нежели консультация, поэтому она регистрируется в отдельном 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) с набором значений причин статуса иммунизации; четыре приведённых выше кода из 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 }]
}

Доза уникально идентифицируется по сочетанию пациент + vaccineCode + occurrence + lotNumber — не отправляйте одну и ту же комбинацию дважды.

5. Регистрация реакции (при наличии)

Если у пациента возникает поствакцинальная реакция, зарегистрируйте AdverseEvent, чей suspectEntity ссылается на Immunization, при необходимости с Observation, описывающим реакцию.

Связанные материалы