2016-08-24 1 views
2

그래서 "$ 다"작업에서 FHIR 환자 번들 JSON이 : 지금 작업하게 FHIR 파이썬 클라이언트 모델에 스마트를 사용에 관심이 https://www.hl7.org/fhir/operation-patient-everything.html스마트 온 FHIR 파이썬 클라이언트

을 json 파일을 훨씬 쉽게 사용할 수 있습니다. 주어진 예는 다음과 같습니다.

import json 
import fhirclient.models.patient as p 
with open('path/to/patient.json', 'r') as h: 
    pjs = json.load(h) 
patient = p.Patient(pjs) 
patient.name[0].given 
# prints patient's given name array in the first `name` property 

번들 내의 다른 자원에 액세스하려면 일반 번들 객체 클래스만으로 인스턴스화 할 수 있습니까?

답변

1

예, 다른 모델을 수동으로 JSON에서 또는 서버의 read으로 인스턴스화 할 수있는 것처럼 Bundle을 인스턴스화 할 수 있습니다. 모든 search은 번들을 반환합니다. 그런 다음 번들의 항목을 반복하여 배열에 넣는 것처럼 번들의 항목을 반복해서 배열 할 수 있습니다.

resources = [] 
if bundle.entry is not None: 
    for entry in bundle.entry: 
     resources.append(entry.resource) 

p.s. $operation을 클라이언트와 함께 실행할 수 있어야하며 언급 한 Bundle을 반환해야합니다. 그러나 우리가 노출했는지 또는 커밋되지 않았는지 확인해야합니다.


명령 줄 예 : 추가 자세한 내용은 파스칼 감사합니다 @

import fhirclient.models.bundle as b 
import json 
with open('fhir-parser/downloads/bundle-example.json', 'r') as h: 
    js = json.load(h) 
bundle = b.Bundle(js) 
bundle.entry 
[<fhirclient.models.bundle.BundleEntry object at 0x10f40ae48>, 
<fhirclient.models.bundle.BundleEntry object at 0x10f40ac88>] 
for entry in bundle.entry: 
    print(entry.resource) 

// prints 
<fhirclient.models.medicationorder.MedicationOrder object at 0x10f407390> 
<fhirclient.models.medication.Medication object at 0x10f407e48> 
+0

! 네가 제안하는 것을 모으는 것 같아. 필자의 경우 필자는 문제가되는 서버가 FHIR에서 Smart를 사용하지 않기 때문에 모든 환자용 FHIR 번들 ($에서 모든 것)을 디렉토리의 개별 json 파일로 작성했습니다. 그래서 수동으로 많은 이들 필드를 반복하는 반대로 이러한 임의의 번들에 대한 스마트 모델을 사용하고 싶었어요. "import fhirclient.models.object.bundle as b"는 제가 게시 한 환자의 예제와 같은 것을 할 수있게합니다. – Pylander

+0

Hy @Pylander. 이 작업은 분명히 효과적입니다. FHIR 웹 사이트에서 사용할 수있는'Bundle-example.json' 파일을 읽고 명령 줄에서 방금 실행 한 완전한 코드를 추가했습니다. 그게 당신이 성취하려고하는 것입니까? – Pascal