HAPI FHIR检索患者

时间:2020-05-03 11:39:26

标签: java hapi-fhir

我对HAPI FHIR客户端还很陌生,并且一直在无休止地浏览教程和文档以尝试为我要开发的程序提供帮助,但是现在在查询服务器以进行搜索时,我陷入了困境。列出由同一位从业者治疗的所有患者。换句话说,我希望用户输入从业者ID号,并让系统返回患者列表及其详细信息。输入从业者的ID号时,我可以查询服务器以获取所有的遭遇者,这些都被放入捆绑包中,但是我不知道从那里去哪里。我放置了用于获取捆绑软件的代码行,并可以验证它是否有效,因为在计算捆绑软件中的资源数量时,我得到了正确的数字。 pracID是用户输入的整数。

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

我还使用Context客户端的R4版本在IntelliJ上用Java对该代码进行编码。我将不胜感激任何帮助。预先感谢

1 个答案:

答案 0 :(得分:0)

我认为通向罗马的道路很多,但是我的第一个幼稚方法是:您可以尝试使用搜索参数_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());
      }
});