<jupyter_start><jupyter_text>Erstellen einer FHIR Patient Ressource mit dem Python fhirclientUm den Python fhirclient zu installieren kann man entweder die aktuellste Version aus dem [GitHub Repository](https://github.com/smart-on-fhir/client-py) nehmen oder die zuletzt auf [PyPi](https://pypi.org/project/fhirclient/) veröffentlichte Version. Da diese jedoch noch STU-3 ist, nutzen wir für die folgenden Beispiele die GitHub Version (R4).<jupyter_code>!pip install git+git://github.com/smart-on-fhir/client-py.git<jupyter_output><empty_output><jupyter_text>IFrame wird hier nur zu Darstellungszwecken importiert und wird nicht für die späteren Aufgaben benötigt.<jupyter_code>from IPython.display import IFrame
# Patient Ressource in der FHIR Spezifikation.
IFrame('https://hl7.org/fhir/patient.html#resource', width=1200, height=330)
from fhirclient.models import patient
# Instanziieren eines Patienten
my_patient = patient.Patient()
# help() Funktion, um mehr Informationen zu erhalten
help(my_patient)<jupyter_output><empty_output><jupyter_text>Mit der Patient Ressource vertraut machenUm erstmal einen Überblick davon zu erhalten wie die Patienten Ressource aufgebaut ist, bzw. welche Attribute diese enthält kann die Funktion **elementProperties()** aufgerufen werden, diese gibt dann alle Attribute der fhirclient Klasse **Patient()** mit ihren jeweiligen Eigenschaften zurück.<jupyter_code>for property in my_patient.elementProperties():
    print(property)<jupyter_output><empty_output><jupyter_text>Name des Patienten / der Patientin<jupyter_code>IFrame('https://hl7.org/fhir/datatypes.html#HumanName', width=1200, height=330)
from fhirclient.models import humanname
name = humanname.HumanName()
name.family = 'Bach'
name.given = ['Johann', 'Sebastian']
name.text = '<NAME>'
name.use = 'official'
my_patient.name = [name]<jupyter_output><empty_output><jupyter_text>Geburtsdatum<jupyter_code>IFrame('https://hl7.org/fhir/datatypes.html#date', width=1200, height=330)
from fhirclient.models import fhirdate
date_of_birth = fhirdate.FHIRDate('1967-05-25')
my_patient.birthDate = date_of_birth
import json
print(json.dumps(my_patient.as_json(), indent=4))<jupyter_output><empty_output><jupyter_text>Pythons Requests LibraryDie [Requests Library](https://requests.readthedocs.io/en/master/) enthält Funktionen um HTTP Anfragen schnell um simpel an einen Server zu schicken.<jupyter_code>import requests
fhir_test_server = 'https://server.fire.ly'

headers = {
'Accept':'application/fhir+json; fhirVersion=4.0',
'Content-Type':'application/fhir+json; fhirVersion=4.0'
}
response = requests.post(f'{fhir_test_server}/Patient/$validate', headers = headers, data = json.dumps(my_patient.as_json()))
operation_outcome = response.json()
IFrame(f'http://http.cat/{response.status_code}', width=750, height=600)
print(json.dumps(operation_outcome, indent=4))
response = requests.post(f'{fhir_test_server}/Patient', headers = headers, data = json.dumps(my_patient.as_json()))
operation_outcome = response.json()
IFrame(f'http://http.cat/{response.status_code}', width=750, height=600)
print(json.dumps(operation_outcome, indent=4))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1177587844254511, 'fraction_numerical': 0.016777461221905668, 'mean_word_length': 7.681318681318682, 'pattern_counts': {'":': 0, '<': 26, '<?xml version=': 0, '>': 26, 'https://': 7, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '281718', 'license': 'Apache-2.0', 'n_tokens_mistral': 1112, 'n_tokens_neox': 1076, 'n_words': 227, 'path': 'patient.ipynb', 'repo_name': 'julsas/fhir-tutorial-notebooks', 'size': '3174'}