Отраслевые стандарты на примере FHIR

↑ 5.5 Интеграции со сторонними API: 1С, Битрикс24, FHIR · ← Предыдущая · → Следующая

По желанию~3 мин чтенияУровень: middle

Зачем это на собесе

Показывает работу со сложными доменными стандартами (здравоохранение): ресурсы, справочники, профили.

Объяснение

FHIR (Fast Healthcare Interoperability Resources) — стандарт обмена медицинскими данными на основе REST и JSON/XML.

ПонятиеСмысл
Resourceединица данных: Patient, Encounter, Observation, Practitioner
Referenceссылка между ресурсами ("subject": {"reference": "Patient/123"})
Bundleнабор ресурсов (результат поиска, транзакция)
Profileограничения/расширения ресурса для конкретной страны/системы
Extensionдополнительные поля вне базовой модели
Terminology (CodeSystem, ValueSet)справочники: LOINC, SNOMED CT, МКБ
Search parametersGET /Patient?family=Иванов&birthdate=gt1990-01-01
{
  "resourceType": "Observation",
  "status": "final",
  "code": { "coding": [{ "system": "http://loinc.org", "code": "718-7", "display": "Hemoglobin" }] },
  "subject": { "reference": "Patient/123" },
  "valueQuantity": { "value": 140, "unit": "g/L" }
}

REST-операции: read, vread, create, update, search, history, транзакции через Bundle. Для .NET есть библиотека Firely SDK (Hl7.Fhir.R4) с типизированными ресурсами и валидацией.

Общий урок: отраслевые стандарты задают словарь и контракты. Ваша задача — аккуратно отобразить внутреннюю модель на стандарт, не ломая семантику.

Нюансы и подводные камни

  • Версии стандарта (DSTU2, STU3, R4, R5) несовместимы полностью.
  • Профили и справочники различаются по странам и системам: «валидный FHIR» не значит «принятый чужой системой».
  • Персональные и медицинские данные: шифрование, аудит доступа, согласия, требования регуляторов.
  • Ссылки между ресурсами требуют целостности: порядок создания в Bundle-транзакции.
  • Идентификаторы: используйте identifier с системой (system + value), а не только внутренний id.

Практика

  1. Прочитайте Patient и Observation из публичного FHIR-сервера (HAPI) через Firely SDK.
  2. Сопоставьте ваши сущности с ресурсами и запишите правила маппинга.
  3. Провалидируйте ресурс по профилю.

Вопросы с ответами

Связанные темы