HAPI FHIR Получить пациентов - PullRequest
0 голосов
/ 03 мая 2020

Я очень новичок в клиенте HAPI FHIR и бесконечно просматриваю учебные пособия и документацию, чтобы попытаться помочь мне с моей программой, которую я пытаюсь разработать, но теперь я застрял, когда нужно запросить сервер для поиска список пациентов, которых лечит один и тот же практикующий врач. Другими словами, я хочу, чтобы пользователь ввел идентификационный номер практикующего, а система вернула список пациентов с их данными. Я смог запросить сервер, чтобы получить все Encounters при вводе идентификационного номера Практика, которые все были помещены в Bundle, но я не знаю, откуда go оттуда. Я поместил строку кода, которую использовал для получения пакета, и могу убедиться, что он работает, потому что при подсчете количества ресурсов в пакете я получаю правильное число. pracID - это введенное пользователем целое число.

Bundle response = client.search().forResource(Encounter.class).where(Encounter.PRACTITIONER.hasId(Integer.toString(pracID))).returnBundle(Bundle.class).execute();

Я также кодирую это в Java на IntelliJ, используя версию клиента Context для R4. Я буду очень признателен за любую помощь. Заранее спасибо

1 Ответ

0 голосов
/ 04 мая 2020

Я думаю, что есть много дорог, ведущих в Рим, но мой первый наивный подход был бы следующим: Вы можете попытаться найти данные пациента рекурсивно, используя параметр поиска _include . Этот параметр поиска ищет все объекты столкновения для соответствующего субъекта:

Bundle response = 
   client.search()
   .forResource(Encounter.class)
   .where(Encounter.PRACTITIONER.hasId(Integer.toString(pracID)))
   .include(Patient.INCLUDE_ALL.asRecursive())
   .returnBundle(Bundle.class).execute(); 

Если ссылки доступны, теперь пакет должен содержать не только объекты Encounter, но и объекты Patient, которые можно было бы извлечь для дальнейшей обработки следующим образом:

List<Patient> listPatients = new ArrayList<Patient>();
response.getEntry().forEach(entry -> { 
      if (entry.getResource() instanceof Patient) {
        listPatients.add((Patient) entry.getResource());
      }
});
...