Templates uploaden#
Voordat we data kunnen opslaan in openEHR moeten we eerst de template uploaden. Het template hebben we in een eerdere
stap geexporteerd naar een .opt bestand. Dit bestand bevat een grote hoeveelheid XML waarin alles wat we net hebben
ingesteld staat vastgelegd. Als we data posten op dit template zal de server ook validatie doen om ervoor te zorgen
dat het voldoet aan het template.
Template API#
De template API is te vinden onder {{ehrbase_url}}/rest/openehr/v1/definition/template/adl1.4. Voor een locale omgeving
is staat ehrbase_url dus gelijk aan localhost:8080/ehrbase. De inhoud van het .opt bestand moet in
de Body van het bericht en in de header moeten we aangeven dat het om XML gaat door het Content-Type attribuut naar
application/xml te zetten (de content-type die in de meeste API clients wordt meegegeven werkt niet want de API is
case sensitive). Vervolgens kunnen we het template posten. Let wel dat er maar één template met dezelfde naam
in de database mag staan. Probeer dus een unieke naam te geven aan jouw template.
In Bruno is de template gemakkelijk te plaatsen door een POST bericht te sturen naar de openEHR REST API. Zorg ervoor
dat in de header een variabele voor Content-Type is toegevoegd.
Fig. 17 Templates uploaden in Bruno.#
In de Swagger UI is de POST Template te vinden op {{ehrbase_url}}/swagger-ui/index.html#/ADL%201.4%20TEMPLATE/createTemplateClassic.
Fig. 18 Templates posten via de Swagger UI.#
import requests
from pathlib import Path
ehrbase_url = "http://localhost:8080/ehrbase" # swap this out with sandkiste URL if needed
url = ehrbase_url + "/rest/openehr/v1/definition/template/adl1.4"
payload = Path("workshop-example.opt").read_text()
headers = {"Content-Type": "application/xml"}
response = requests.post(url, data=payload, headers=headers)
print(response.json())
De EHRBase Client Library kan gebruikt worden als alternatief voor de REST API. Voor meer informatie zie: https://docs.ehrbase.org/docs/EHRbase/openEHR-Introduction/Template#client-library
OPERATIONALTEMPLATE template = TemplateDocument.Factory.parse(OperationalTemplateTestData.BLOOD_PRESSURE_SIMPLE.getStream()).getTemplate();
String templateId = "ehrbase_blood_pressure_simple.de.v" + RandomStringUtils.randomNumeric(10);
template.getTemplateId().setValue(templateId);
String actual = new DefaultRestTemplateEndpoint(cut).upload(template);
Opdracht
Open het .opt bestand dat je hebt gemaakt in Templates en copy-paste de inhoud van het bestand in Bruno
of Swagger. Plaats de template vervolgens op de openEHR server door het bericht te versturen.
Templates bekijken#
Als je een 201 Created status terugkreeg bij de vorige opdracht dan staat de template als het goed is geregistreerd in de openEHR
server. Om dit te checken kunnen we een specifieke template ophalen, een voorbeeld ophalen, of alle templates bekijken.
Laten we voor nu alle templates ophalen en kijken of de template ertussen staat. Stuur een GET request naar
{{ehrbase_url}}/rest/openehr/v1/definition/template/adl1.4.
Fig. 19 Templates bekijken in Bruno.#
Fig. 20 Templates bekijken via de Swagger UI.#
import requests
ehrbase_url = "http://localhost:8080/ehrbase" # swap this out with sandkiste URL if needed
url = ehrbase_url + "/rest/openehr/v1/definition/template/adl1.4"
response = requests.get(url)
print(response.json())
TODO
Opdracht
Gebruik de List Templates optie in de openEHR REST API om te checken of je eigen template ertussen staat!