Templates uploaden

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.

_images/post_template_bruno.png

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.

_images/post_template_swagger.png

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.

_images/list-templates-bruno.png

Fig. 19 Templates bekijken in Bruno.#

_images/list-templates-swagger.png

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!