FHIR® tutorials FHIR® уроки

Simple Search

This tutorial will build on the foundation laid out in the Simple Patient tutorial to introduce searching against FHIR resources.

Step 1: Name Searching

Let's start with the simplest of searches, a patient's family name search.

The Simple Patient tutorial uploaded a Patient resource for a Mr Sam Fhirman. Let's try and find that Patient resource by searching on family name. To do this we need to construct a URL starting with the [Service Root URL] followed by the resource type Patient, a question mark character '?' and finished with the search parameters we wish to search with family=Fhirman in this case.

Perform this search in your Postman client using he Http verb GET. Now, take a few minutes to examine the result returned:

/Patient?family=fhirman

Did you notice that you received a Bundle resource in return? When you perform a search you are more than likely to receive many resource matching your search. In FHIR, search results are always returned as a Bundle. A Bundle is used in FHIR to gather a collection of resource into a single instance. The reason there are so many Mr Sam Fhirman Patient resources is due to every student taking part in the Simple Patient tutorial uploading their own instance of the same patient. This may explain why our PAS team is so busy with duplicate patient merging. Of course this should not be the case in the real world. Although the PAS team may have another opinion.

Don't worry about knowing the structure of the Bundle resource extensively - we'll go over Bundles shortly in our Bundle tutorial.

Step 2: Extended Search

In the previous step we searched by the patient's family name, but what else can we search upon? The search parameters you can use are Resource type dependant. Each resource type defines the parameters which you can search upon it. Right click and open the Patient resource page in a second browser tab and scroll to the very bottom of the page. Here you will find the list of possible search parameters for the Patient resource. Take a look at some other resource types and the search parameters they define.

In the previous tutorial, Simple Patient, you should have created a new patient resource with your own name as the patient's name. Try and find that resource using your own surname and first name. Remember to reference the FHIR specification to work out which search parameters you will need.

Step 3: Search Parameter Types

The searches we have done so far, family & given, were on simple string datatypes. FHIR defines eight different search datatypes as follows:

  • Number
  • Date/DateTime
  • String
  • Token
  • Reference
  • Composite
  • Quantity
  • URI
  • Each and every search parameter on each resource page also defines the search parameter data type it uses. The screenshot below is taken from the Patient resource page. Notice that given uses string in column two and that identifier uses datatype token.

    FHIR specification Search page
    Using the references above try and answer these questions:
  • What datatype does the search parameter length use on the Encounter resource?

  • Using the references above try and find the patient with an old address in the suburb of 'Erinsborough'?

  • Try and find the patient name for the person with an IHI (Individual Health Identifier) of '8003601043886154'?

  • These few questions have focused on the token search parameter datatype but I strongly encourage you to read then entire Search page in the FHIR specification at a later date.

    Поиск

    Этот урок будет основываться на фундаменте, заложенном в уроке Пациент, чтобы представить поиск по ресурсам FHIR.

    Шаг 1: Поиск по имени

    Начнем с самого простого поиска - поиска по фамилии пациента.

    В уроке Пациент был загружен ресурс Patient для г-на Сэма Файрмэна. Давайте попробуем найти этот ресурс Patient, выполнив поиск по фамилии. Для этого нам нужно построить URL, начинающийся с [Service Root URL], за которым следует тип ресурса Patient, символ вопроса '?' и заканчивающийся параметрами поиска, с которыми мы хотим искать family=Fhirman в данном случае.

    Выполните этот поиск в вашем клиенте Postman, используя HTTP-глагол GET. Сейчас, потратьте несколько минут на изучение возвращенного результата:

    /Patient?family=fhirman

    Заметили ли вы, что в ответ получили ресурс Bundle? Когда вы выполняете поиск, вы, скорее всего, получите много ресурсов, соответствующих вашему поиску. В FHIR результаты поиска всегда возвращаются как Bundle. Bundle используется в FHIR для сбора коллекции ресурсов в один экземпляр. Причина, по которой существует так много ресурсов Patient г-на Сэма Файрмэна, заключается в том, что каждый студент, участвующий в уроке Пациент, загружает свой собственный экземпляр того же пациента. Это может объяснить, почему наша команда PAS так занята объединением дублирующихся пациентов. Конечно, этого не должно быть в реальном мире. Хотя команда PAS может иметь другое мнение.

    Не беспокойтесь о том, чтобы обширно знать структуру ресурса Bundle - мы вскоре рассмотрим Bundle в нашем уроке Bundle.

    Шаг 2: Расширенный поиск

    На предыдущем шаге мы искали по фамилии пациента, но по чему еще мы можем искать? Параметры поиска, которые вы можете использовать, зависят от типа ресурса. Каждый тип ресурса определяет параметры, по которым вы можете искать в нем. Щелкните правой кнопкой мыши и откройте страницу ресурса Patient во второй вкладке браузера и прокрутите до самого низа страницы. Здесь вы найдете список возможных параметров поиска для ресурса Patient. Посмотрите на некоторые другие типы ресурсов и параметры поиска, которые они определяют.

    В предыдущем уроке Пациент вы должны были создать новый ресурс пациента с вашим собственным именем в качестве имени пациента. Попробуйте найти этот ресурс, используя вашу собственную фамилию и имя. Не забудьте обратиться к спецификации FHIR, чтобы выяснить, какие параметры поиска вам понадобятся.

    Шаг 3: Типы параметров поиска

    Поиски, которые мы делали до сих пор, family и given, были по простым строковым типам данных. FHIR определяет восемь различных типов данных поиска следующим образом:

  • Число
  • Дата/Время
  • Строка
  • Токен
  • Ссылка
  • Составной
  • Количество
  • URI
  • Каждый параметр поиска на каждой странице ресурса также определяет тип данных параметра поиска, который он использует. Скриншот ниже взят со страницы ресурса Patient. Обратите внимание, что given использует string во втором столбце, а identifier использует тип данных token.

    Страница поиска спецификации FHIR
    Используя приведенные выше ссылки, попробуйте ответить на эти вопросы:
  • Какой тип данных использует параметр поиска length в ресурсе Encounter?

  • Используя приведенные выше ссылки, попробуйте найти пациента со старым адресом в пригороде 'Erinsborough'?

  • Попробуйте найти имя пациента для человека с IHI (Individual Health Identifier) '8003601043886154'?

  • Эти несколько вопросов были сосредоточены на типе данных параметра поиска token, но я настоятельно рекомендую вам прочитать всю страницу Поиск в спецификации FHIR позже.