2016-06-21 13 views
1

Я использую Hapi FHIR DSTU2 HL7Org. В моем приложении мне нужно создать MedicationOrder и предоставить возможность обновления/удаления ошибочных записей. У меня есть id, patientId и т. Д. Созданного MedicationOrder, но написание кода с предложением where довольно проблематично. Во всех примерах, которые я видел, как записиПоиск FHIR-сервера для определенного идентификатора ресурса

where(Patient.FAMILY.matches().value("duck") 

подарки, но я получаю SP_PATIENT, SP_STATUS и т.д.

FhirContext ctx = FhirContext.forDstu2Hl7Org(); 
IGenericClient client = ctx.newRestfulGenericClient("http://fhirtest.uhn.ca/baseDstu2"); 
Bundle bundle = client.search().forResource(MedicationOrder.class).where(MedicationOrder.SP_PATIENT.equals("patientId")).returnBundle(Bundle.class).encodedXml().prettyPrint().execute(); 

Приведенный выше код не компилируется говоря: «Метод где (ICriterion) в тип IQuery не применим для аргументов (boolean) ". Мне не удалось создать какой-либо объект IQuery.

Может кто-нибудь, пожалуйста, проинструктирует меня, как действовать дальше?

ответ

0

Это немного странно - структуры DSTU2 HL7Org были созданы в тот момент, когда мы еще не внесли все функции модели из структур HAPI в HL7Org. Эти константы критерия «non-SP» являются одной из вещей, которые мы не скопировали.

Хорошей новостью является то, что вы все равно можете использовать те из структур DSTU2 или DSTU3, если хотите, даже если вы используете структуры DSTU2-Hl7Org. Вы могли бы сделать это с чем-то вроде:

FhirContext ctx = FhirContext.forDstu2Hl7Org(); 
IGenericClient client = ctx.newRestfulGenericClient("http://fhirtest.uhn.ca/baseDstu2"); 
Bundle bundle = client.search().forResource(MedicationOrder.class).where(ca.uhn.fhir.model.dstu2.resource.MedicationOrder.PATIENT.matches().value("duck")).returnBundle(Bundle.class).encodedXml().prettyPrint().execute(); 
+0

Thanks @James Agnew. Я думал, что URL-адрес ресурса уникален для данного ресурса, поэтому, если я обновляю/удаляю ресурс, предложение where должно содержать его. Но я вижу, что в доступных параметрах поиска ничего подобного нет. Есть ли обходной путь для этого? –

+0

Извините, я не уверен, что я следую. Код, который вы показываете, предназначен для поиска, а не для создания или удаления. Вы можете взять результаты и удалить их, если хотите. Если вы пытаетесь выполнить условное удаление, есть пример этого на нашей странице документации [здесь] (http://hapifhir.io/doc_rest_client.html#Conditional_Deletes), и вы можете сделать тот же тип предложения where. –

+0

Привет, Мое приложение создает ресурсы MedicationOrder на удаленном сервере FHIR, а также возможность удаления созданного ресурса. Поскольку у пациента может быть несколько заказов на разные времена администрирования, я подумал, что условное удаление с использованием idPart является лучшим здесь. Это служит этой цели? 'client.delete(). resourceById (" MedicationOrder "," ") .encodedXml(). prettyPrint(). execute();' –

 Смежные вопросы

  • Нет связанных вопросов^_^