AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Происхождение медицинских данных: объяснение

Что записывается при каждом изменении в записи FHIR R4 — тип автора, лицо, организация, исходная система, версии — как установить это с помощью заголовков, как это прочитать и как это маркирует данные, предоставленные моделям ИИ.

Происхождение — это запись о том, откуда взялись медицинские данные: кто их написал, от имени какой организации, из какой системы, когда и что изменилось в каждой версии. В записи, которая собирает данные от пациентов, устройств, клиник, лабораторий и ИИ, именно происхождение делает значение достоверным: показание артериального давления, введенное дома, и показание, измеренное в клинике, без него выглядят идентично. В Anpheros каждая запись в запись HL7 FHIR R4 автоматически создает ресурс FHIR Provenance. На этой странице объясняется, что он содержит, как его правильно заполнить и как его прочитать.

Почему происхождение данных имеет значение

Что Anpheros записывает при каждой записи

Вопрос Где это записывается Как вы это устанавливаете
Тип автора? agent.who.identifier (тип автора) author_type в /v1, или заголовок X-Anpheros-Author-Type: patient, practitioner, device, import, ai
Какой человек? agent.who.reference X-Anpheros-Author-Ref: Practitioner/<id>, или X-Anpheros-Acting-As
Для какой организации? agent.onBehalfOf организация PractitionerRole, или X-Anpheros-On-Behalf-Of: Organization/<id>
Из какой системы? entity с ролью source X-Anpheros-Source-System: <name>
Какая запись в этой системе? origin id X-Anpheros-Origin-Id: <id>
Когда и что произошло? recorded, activity (CREATE, UPDATE, DELETE) автоматически
Какая версия? target указывает на <Resource>/<id>/_history/<version> автоматически

Если вы не укажете, кто является автором, платформа запишет import. Она никогда не предполагает patient, потому что значение, ошибочно приписанное пациенту, хуже, чем значение, честно помеченное как импортированное.

Запись с полным происхождением

Кардиолог в клинике записывает частоту сердечных сокращений во время визита через программное обеспечение клиники:

curl -X POST https://platform.anpheros.com/fhir/R4/Observation -H "Authorization: Bearer $KEY" \
     -H "Content-Type: application/fhir+json" \
     -H "X-Anpheros-Author-Type: practitioner" \
     -H "X-Anpheros-Acting-As: PractitionerRole/$ROLE" \
     -H "X-Anpheros-Source-System: ccn-emr" \
     -d '{ "resourceType": "Observation", "status": "final", "code": {"coding": [{"system": "http://loinc.org", "code": "8867-4"}]}, … }'

Данные о происхождении (Provenance), записываемые платформой:

{"resourceType": "Provenance",
 "target": [{"reference": "Observation/8660eb7c-…/_history/1"}],
 "recorded": "2026-10-12T20:41:47.469000Z",
 "activity": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/v3-DataOperation", "code": "CREATE"}]},
 "agent": [{"type": {"coding": [{"system": "http://terminology.hl7.org/CodeSystem/provenance-participant-type", "code": "author"}]},
            "who": {"reference": "PractitionerRole/e6d8c227-…",
                    "identifier": {"system": "https://anpheros.com/fhir/CodeSystem/author-type", "value": "practitioner"}},
            "onBehalfOf": {"reference": "Organization/c3a56a4b-…", "display": "Clinica Cardio Nord"}}],
 "entity": [{"role": "source", "what": {"identifier": {"system": "ccn-emr"}}}]}

Роль врача, его клиника, тип автора и исходная система — все это присутствует в стандартном формате FHIR. PractitionerRole должен существовать в каталоге вашего проекта и быть активным. Запрос, в котором указан практикующий врач, отличный от текущего, отклоняется:

{"resourceType": "OperationOutcome", "issue": [{"severity": "error", "code": "invalid",
  "diagnostics": "Unknown or inactive Practitioner in X-Anpheros-Acting-As."}]}

Настройка каталога описана в разделе Как интегрировать системы клиник с FHIR-бэкендом.

Версии: ничего не перезаписывается молча

Каждое обновление создает новую версию ресурса и новый Provenance для нее. После того как частота сердечных сокращений выше будет исправлена с 92 до 88:

curl https://platform.anpheros.com/fhir/R4/Observation/$OBS/_history -H "Authorization: Bearer $KEY"

возвращает версию 2 (88) и версию 1 (92). REST-представление обобщает Provenance каждой версии:

curl https://platform.anpheros.com/v1/patients/$PID/provenance/Observation/$OBS -H "Authorization: Bearer $KEY"
{"data": [
  {"version": 1, "activity": "CREATE", "recorded": "2026-10-12T20:41:47.469000Z", "author_type": "practitioner", "author": "PractitionerRole/e6d8c227-…", "source_system": "ccn-emr", "fhir": "Provenance/6ed91529-…"},
  {"version": 2, "activity": "UPDATE", "recorded": "2026-10-12T20:41:47.500000Z", "author_type": "practitioner", "fhir": "Provenance/3fbf270f-…"}],
 "total": 2}

Удаления являются "мягкими": удаленный ресурс исчезает из поисковых запросов, но его история и Provenance остаются.

Чтение provenance

# who wrote this resource (all versions)
GET /fhir/R4/Provenance?target=Observation/{id}
# everything a practitioner recorded
GET /fhir/R4/Provenance?agent=PractitionerRole/{id}
# the same, summarised, per resource
GET /v1/patients/{pid}/provenance/Observation/{id}

Происхождение в контекстах ИИ

API контекста передает информацию о происхождении в каждый элемент, который он предоставляет модели, как author_type и source. В текстовом виде:

- Type 2 diabetes mellitus (E11), active, onset 2024-10-15 [import/anpheros-sandbox]
- Metformin 1000 mg 1 tablet twice daily with meals, active [patient/anpheros-sandbox]
- Glucose [Mass/volume] in Blood: 2026-09-16: 140.0 mg/dL [device/anpheros-sandbox]

Измерения, записанные с помощью author_type: ai, никогда не появляются среди этих фактов. Они перечислены отдельно в разделе ai_notes и помечены как непроверенные, поэтому модель не может ошибочно принять предположение предыдущей модели за измерение. Сообщите модели, что означают метки, и попросите ее сослаться на них; Как создать приложение для здравоохранения с использованием ИИ и бэкенда FHIR демонстрирует соответствующий запрос.

Что видит пациент

Происхождение (Provenance) — это также то, что видит пациент. В его записи показано, кто добавил каждый элемент, а в списке подключений показано, кто и к чему обращался из каждого приложения, с указанием имени, когда действовал практикующий врач («Д-р Ана Попеску · Клиника Кардио Норд прочитал(а) ваши результаты анализов»). См. Модель согласия и доступа.

Правила, делающие происхождение полезным

  1. Всегда указывайте тип автора. Это требует одного поля и является самой важной меткой в записи.
  2. Указывайте имя человека, когда его написал человек. Используйте X-Anpheros-Acting-As для клинического персонала.
  3. Указывайте исходную систему и передавайте собственный идентификатор источника в качестве идентификатора происхождения, если он есть.
  4. Исправляйте путем обновления, никогда путем удаления и повторного создания. Обновление сохраняет связь между старым и новым значением.
  5. Маркируйте вывод ИИ как ai, включая значения, извлеченные моделью из документа. Значения, полученные из документа, также могут ссылаться на него с помощью derived_from.

Часто задаваемые вопросы

Что такое происхождение данных (data provenance) в здравоохранении?

Документированное происхождение и история фрагмента медицинских данных: кто создал или изменил его, от чьего имени, из какой системы и когда. В HL7 FHIR это представлено ресурсом Provenance, который указывает на точную версию ресурса, который он описывает.

Является ли происхождение данных тем же, что и журнал аудита?

Нет. Происхождение данных описывает сами данные: кто записал каждую версию. Журнал аудита описывает доступ: кто, когда и под каким согласием читал или записывал что-либо. Anpheros ведет оба; пациент видит журнал доступа для каждого приложения, подключенного к его записи.

Могу ли я создавать собственные ресурсы Provenance?

Anpheros создает один ресурс для каждого создания, обновления и удаления, поэтому обычно вам это не нужно. Используйте заголовки выше, чтобы сделать его точным. Предоставленный клиентом ресурс Provenance должен быть нацелен на ресурсы одного пациента.

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

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy