In een sjabloon kunnen tags worden gezet die worden vervangen met data als een document wordt gegenereerd. Die data kan worden 'gevonden' door tags in te richten.
Tags worden gegenereerd door op een gestructureerde manier API's uit te vragen. In Ons Tags kun je, door tagcollecties te ontwerpen, zelf betekenis aan de tags geven. Tagcollecties bevatten structuren (nodes) die beginnen bij het aanroepen van een API en daarna de data daarvan verwerken in data- en leafnodes. Elke node verfijnt/specificeert de data.
Een data-node is een data-object dat uit een API-call/API-node komt. Op basis van de verkregen data kan ook weer een nieuwe API aangeroepen worden, en over lijsten (arrays) kan getereerd worden.
Systeemtags
Ons Tags komt standaard met een aantal voorgedefinieerde tags, zogenaamde systeemtags. Deze tags kun je niet wijzigen of verwijderen. Ze zijn te herkennen door een slotje in de lijst met tagcollecties. Tags die je zelf maakt krijgen dit slotje niet.
Er is nog een verschil tussen systeemtags en zelfgemaakte tags. Nodes in zelfgemaakte tags beginnen altijd met een liggend streepje (_). Op deze manier voorkomen we dubbele namen als we een systeemtag toevoegen met namen die een gebruiker al gebruikt had in een zelfgemaakte tag. Dit stelt Nedap in staat om onze standaardcollectie aangeboden tags over verloop van tijd uit te breiden zonder ons druk te hoeven maken dat we potentiële ingestelde tags van klanten overschrijven. Het liggende streepje wordt automatisch toegevoegd als je een nieuwe tag maakt. Let erop dat je dit liggende streepje ook in je sjablonen gebruikt.
Tagcollecties
De balk aan de linkerkant van het tabblad Tags toont een lijst met alle tagcollecties. Een tagcollectie is een verzameling van samenhangende tags die op een gestructureerde manier de Ons API uitvragen. Bovenaan staan de benodigde, niet-vooraf gedefinieerde parameters vermeld die ingevoerd moeten worden bij het uitvoeren van deze tagcollectie. Een andere naam voor tagcollectie is een tag tree.
API-nodes
API-nodes zijn nodes waarin een API-call wordt gedaan. De API's staan gedocumenteerd op ons-api.nl. Bij het maken van een nieuwe tag kun je een API kiezen die wordt aangeroepen. Als de API wordt aangeroepen, worden één of meerdere stukken data opgehaald uit het Ons-systeem.
Bij het aanroepen van een API zijn standaard één of meerdere parameters nodig (bijvoorbeeld het clientId voor welke cliënt deze informatie opgehaald wordt). Op het moment van uitvoeren van een tag (of bij documentgeneratie) moeten deze parameters mee worden gegeven. Het is ook mogelijk om in de instellingen van de API-node een vaste waarde voor deze parameter in te stellen. Als de parameter een standaard waarde heeft, hoeft deze bij uitvoer niet alsnog meegegeven te worden. De parameter verdwijnt dus ook uit het parameteroverzicht.
Uit een API-node kan worden teruggegeven:
een data-object
een lijst
een dynamische lijst (DynamicList)
Voor een API-node kun je ook een tag specificeren. Deze is enkel nuttig als de API-node een lijst teruggeeft. Deze tag kan dan gebruikt worden om aan te geven dat er over de lijst getereerd dient te worden (zie ook Herhalende Tags).
Lijst-nodes
Voor lijst-nodes (te herkennen aan de lijst-icoontjes) kunnen sorteringen en filters ingesteld worden.
Sortering
Voorbeeld: Bob (20 jaar), Charlie (16 jaar), Anne (20 jaar), Anne (18 jaar)
Sorteringen:
Leeftijd van boven naar beneden (ASC)
Naam van beneden naar boven (DESC)
Resultaat: Bob (20 jaar), Anne (20 jaar), Anne (18 jaar), Charlie (16 jaar)
Filters
Bij filters bestaat de keuze uit optionele filters, en niet-optionele filters. Het filteren gebeurt in twee stappen:
Filter de lijst met de niet-optionele filters (en-en)
Filter het resultaat van (1) met de optionele filters (of-of)
Voorbeeld 1
Lijst: (Anne, Bart, Bob)
Filters:
Begint met b -> (Bart, Bob)
Eerste -> (Bart)
Resultaat: Bart
Voorbeeld 2
Lijst: (Anne, Bart, Bob)
Filters:
Eerste -> (Anne)
Begint met b -> ()
Resultaat: ()
Voorbeeld 3
Lijst: (Anne, Bart, Bob)
Filters:
Bevat a (optioneel) -> (Anne, Bart)
Begint met b (optioneel) -> (Bart, Bob)
Resultaat: (Anne, Bart, Bob)
Voorbeeld 4
Lijst: (Anne, Bart, Bob)
Filters:
Bevat a -> (Anne, Bart)
Eerste (optioneel) -> (Anne)
Laatste (optioneel) -> (Bart)
Resultaat: (Anne, Bart)
Voorbeeld 5
Lijst: (Anne, Bart, Bob)
Filters:
Bevat a -> (Anne, Bart)
Eerste (optioneel) -> (Anne)
Resultaat: (Anne)
Dynamische lijst nodes
Een dynamische lijst node is een speciaal geval van een lijst node. Hierbij worden on the fly onderliggende tags aangemaakt bij het uitvoeren van de tag. Deze dynamische tags kunnen in een sjabloon gebruikt worden alsof het normale tags zijn. Een voorbeeld van een dynamische lijst node is te vinden onder de systeemtag client/ehr/data. Deze tag geeft alle EHR paths terug bij een cliënt/archetype. Deze EHR paths zijn zelf ook weer als tag te gebruiken in een sjabloon. Dat vereist dus wel dat de opsteller van het sjabloon weet welke paths beschikbaar zijn in het archetype. De uitvoer van zon dynamische lijst node kan er dan als volgt uitzien:
In een sjabloon kan deze node dan als volgt gebruikt worden in een herhalende tag:
Uitslag looptest: | |
${client/ehr/data} | |
${/content[id0.0.100.1,1]/data[id2,1]/events[id3,1] /data[id4,1]/items[id8,1]/value[id12,1]/magnitude} | ${/content[id0.0.100.1,1]/data[id2,1]/events[id3,1] /data[id4,1]/items[id8,1]/value[id12,1]/units} |
${client/ehr/data} |
Bij een zelfgemaakte dynamische lijst-node kunnen geen onderliggende nodes aangemaakt worden. Dat gebeurt immers automatisch bij het uitvoeren.
Leaf node
Een leaf node bevat een waarde en is doorgaans datgene dat uiteindelijk als tag in een sjabloon gebruikt wordt. Het heet een leaf node, omdat dit het uiteinde/blaadje van de boom is.
De gegeven naam van de leaf node kan als tag gebruikt worden in een sjabloon. De naam mag uit letters, cijfers, -, _ en / bestaan. Als bijvoorbeeld cliënt/voornaam als naam wordt gekozen, dan kan in een sjabloon ${client/voornaam} als tag worden gebruikt om de voornaam van de cliënt in een document te verwerken.
De waarde van een leaf node (bijv. een clientId) kan ook worden gebruikt als invoer voor een nieuwe API-call.
Parameters
Methoden die via een API worden aangeroepen, hebben meestal parameters nodig om aangeroepen te worden. Deze parameters kun je meegeven als een document wordt gegenereerd van een sjabloon met de betreffende tags.
Je kunt ook een vaste waarde voor een parameter inrichten, zodat de waarde vastligt en niet ingevuld hoeft te worden bij het genereren van het document. Bijzondere vaste waarden:
vandaag: te gebruiken voor datum-/tijdparameters, dan wordt de datum van de huidige dag gebruikt;
null: te gebruiken voor alle typen parameters, dan wordt een lege/onbekende waarde meegegeven.
Afhankelijk van welke tags in een sjabloon zijn opgenomen, worden bepaalde API-calls gedaan. Welke parameters benodigd zijn, wordt bepaald in de API-call. Welke parameters nodig zijn voor een bepaald sjabloon, kan via het testscherm worden opgevraagd.
Naast het specificeren van een parameter tijdens het aanroepen, kan een parameter ook worden gespecificeerd aan de hand van de waarde van een andere eind-node. Als de Cliënt API bijvoorbeeld wordt aangeroepen om een cliënt op te zoeken aan de hand van de bsn, dan kan er een eind-node worden gemaakt die de ID van de cliënt bevat. De waarde is van tevoren niet bekend, maar als die bekend is, dan kan de ID worden gebruikt om andere API's aan te roepen die een ID van een cliënt als parameter nodig hebben.
Testen
Als een tag is ingericht, dan kun je deze testen. Via de test kun je controleren of de nodes de goede naam hebben en of de data goed wordt opgehaald/verwerkt, zonder dat er daadwerkelijk een sjabloon ingericht moet worden. Je voert een test uit door met je muis op het blokje van de tagcollectie te gaan staan en op de knop Uitvoeren te klikken.
Er wordt dan een scherm weergegeven waarin de benodigde parameters ingevoerd kunnen worden.
Exporteren en importeren
Je kunt zelfgemaakte tagcollecties exporteren naar een .json-bestand. Dit bestand kun je ook weer importeren in Ons Tags. Op deze manier kun je zelfgemaakte tags uitwisselen met andere gebruikers van Ons Tags, of collecties van een testomgeving overzetten naar een productieomgeving.