Операция $patient-everything в FHIR

Операция Patient-all используется для предоставления представления всех ресурсов, связанных с пациентом. Эта операция может быть полезна для предоставления пациентам доступа ко всей записи или для поставщика или другого пользователя для выполнения массовой загрузки данных, связанных с пациентом. Согласно спецификации FHIR, Patient-all возвращает всю информацию, связанную с одним или несколькими пациентами, описанными в ресурсе или контексте, в котором вызывается эта операция. В API Azure для FHIR можно получить данные, связанные с конкретным пациентом.

Использование patient-everything

Чтобы вызвать Patient-everything, используйте следующую команду:

GET {FHIRURL}/Patient/{ID}/$everything

Примечание

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

Api Azure для FHIR проверяет, может ли он найти пациента, соответствующего указанному идентификатору пациента. Если результат найден, ответ будет иметь тип searchset пакета со следующими сведениями:

Примечание

Если у пациента более 100 устройств, связанных с ними, возвращается только 100 устройств.

Параметры "Пациент-все"

Api Azure для FHIR поддерживает следующие параметры запроса. Все эти параметры являются необязательными:

Параметр запроса Описание
_type Позволяет указать, какие типы ресурсов будут включены в ответ. Например, _type=Encounter вернет только Encounter ресурсы, связанные с пациентом.
Возвращает только те ресурсы, которые были изменены с момента предоставления.
start При указании даты начала будут извлекаться ресурсы, в которых их клиническая дата находится после указанной даты начала. Если дата начала не указана, все записи, предшествующие дате окончания, находятся в области.
end Указание даты окончания приведет к извлечению ресурсов, в которых их клиническая дата находится раньше указанной даты окончания. Если дата окончания не указана, все записи после даты начала находятся в области.

Примечание

Эта реализация Patient-everything не поддерживает параметр _count.

В ресурсе пациента есть элемент под названием link, который связывает пациента с другими пациентами или связанными лицами. Эти связанные пациенты помогают дать целостное представление об исходном пациенте. Ссылка может использоваться, когда пациент заменяет другого пациента или когда два ресурса пациента содержат дополнительную информацию. Одним из вариантов использования ссылок является сообщение ADT 38 или 39 HL7v2. ADT38/39 описывает обновление для пациента. Это обновление может храниться в качестве ссылки между двумя пациентами в элементе link.

Спецификация FHIR содержит подробный обзор различных типов ссылок на пациентов, но ниже приведен общий обзор:

  • replaces — ресурс Patient заменяет другого пациента.
  • refer — пациент является допустимым, но он не считается основным источником информации. Указывает другому пациенту для получения дополнительных сведений.
  • seealso — пациент содержит не менее допустимую ссылку на другого пациента.
  • replaced-by — ресурс Patient заменяет другого пациента.

Операция Patient-everything в Azure API для FHIR обрабатывает ссылки на пациента различными способами, чтобы получить наиболее целостное представление о пациенте.

Примечание

Ссылка также может ссылаться на RelatedPerson. Сейчас RelatedPerson ресурсы не обрабатываются в patient-everything и не возвращаются в пакете.

Сейчас ссылки на замены и ссылки игнорируются операцией Patient-everything, а связанный пациент не возвращается в пакет.

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

Примечание

Он настроен так, чтобы переходить seealso по ссылкам только на один уровень. Он не обрабатывает seealsoseealso ссылки.

См. также схему потоков.

Окончательный тип ссылки заменяется-на. В этом случае исходный ресурс пациента больше не используется, и replaced-by ссылка указывает на пациента, который следует использовать. Эта реализация Patient-everything будет включать по умолчанию результат операции в начале пакета с предупреждением о том, что пациент больше недействителен. Это также будет происходить, если для заголовка Prefer задано значение handling=lenient.

Кроме того, можно задать для заголовка Prefer значение handling=strict , чтобы вызвать ошибку. В этом случае возврат кода ошибки 301 MovedPermanently указывает, что текущий пациент устарел, и возвращает идентификатор правильного пациента, включенного в ссылку. Заголовок ContentLocation возвращенной ошибки будет указывать на правильный и актуальный запрос.

Примечание

replaced-by Если ссылка присутствует, Prefer: handling=lenient а результаты возвращаются асинхронно в нескольких пакетах, в одном пакете возвращается только результат операции.

Порядок ответа "Пациент-все"

Операция Patient-everything возвращает результаты в фазах:

  1. Этап 1 возвращает Patient сам ресурс в дополнение к любым generalPractitionermanagingOrganization ссылкам и на ресурсы ir.
  2. Этапы 2 и 3 возвращают ресурсы в отделении пациента. Если указаны параметры начального и конечного запроса, этап 2 возвращает ресурсы из секции, которые можно отфильтровать по клинической дате, а этап 3 — ресурсы из секции, которые не могут быть отфильтрованы по клинической дате. Если ни из этих параметров не указан, этап 2 пропускается, а этап 3 возвращает все ресурсы отделения пациентов.
  3. Этап 4 возвращает все устройства, ссылающиеся на пациента.

Каждый этап будет возвращать результаты в пакете. Если результаты охватывают несколько страниц, следующая ссылка в пакете будет указывать на следующую страницу результатов для этого этапа. После возврата всех результатов этапа следующая ссылка в пакете будет указывать на вызов для инициации следующего этапа.

Если исходный пациент имеет какие-либо seealso связи, этапы с 1 по 4 будут повторяться для каждого из этих пациентов.

Примеры "Пациент-все"

Ниже приведены некоторые примеры использования операции Patient-everything. В дополнение к примерам у нас есть пример REST-файла , иллюстрирующий, как seealso работает поведение и replaced-by .

Чтобы использовать Patient-everything для запроса в период с 2010 по 2020 год, используйте следующий вызов:

GET {FHIRURL}/Patient/{ID}/$everything?start=2010&end=2020

Чтобы использовать $patient-все для запроса наблюдения и встречи пациента, используйте следующий вызов:

GET {FHIRURL}/Patient/{ID}/$everything?_type=Observation,Encounter 

Чтобы использовать $patient-everything для запроса "все" пациента с 2021-05-27T05:00:00Z, используйте следующий вызов:

GET {FHIRURL}/Patient/{ID}/$everything?_since=2021-05-27T05:00:00Z 

Если пациент найден для каждого из этих вызовов, вы получите ответ 200 с Bundle соответствующими ресурсами.

Дальнейшие действия

Теперь, когда вы знаете, как использовать операцию Patient-everything, вы можете узнать о параметрах поиска.

FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешения HL7.