wiki:Documentatie/Beheerder/Schermen/SqlQueries

SQL Queries

Het SQL Query scherm maakt het mogelijk om willekeurige queries op de database uit te voeren. De queries kunnen ook worden opgeslagen voor hergebruik, of beschikbaar gesteld worden aan gebruikers (bijvoorbeeld voor een zelf-gemaakte rapportage of controlelijst). De queries worden opgeslagen in de database en worden door backups bewaard. De uitvoer van een query kan worden geexporteerd naar Excel zoals elke andere rapportage.

Het is mogelijk om in een query bijzondere beheer-acties uit te voeren die onder andere omstandigheden niet mogelijk zijn; deze functionaliteit is voorbehouden aan de OpenAC beheerder.

Het SQL Query scherm wordt opgeroepen met de knop in de beheers-box van het startscherm.

Lijstweergave

Het SQL Query scherm laat de lijstweergave maar weinig zien: een knop Nieuwe query invoeren om queries in te voeren en een lijst van reeds aangemaakte queries. Dubbelklik op een bestaande query om die query uit te voeren of te bewerken. De OpenAC beheerder kan ook queries verwijderen.

Query Bewerken

In het scherm om queries te bewerken kan je een naam invoeren voor de query -- deze naam is zichtbaar voor gebruikers als publiek ook is aangevinkt. Queries waarvoor publiek aanstaat, zijn voor alle gebruikers te gebruiken vanuit het hoofdscherm onder de knop Query.

De query zelf is in te vullen in het grote tekstvak . Hier moet een geldige query staan in het SQL dialect van de database server die door OpenAC gebruikt wordt (dit is met name van belang bij queries die data-bewerkingen uitvoeren in de query zelf). De query mag over meerdere regels verspreid worden. Er hoeft geen puntkomma (;) aan het eind te staan. In enkele gevallen (DELETE en UPDATE queries) is het mogelijk om meerdere SQL statements in te voeren, gescheiden door puntkommas, maar dit wordt zelden gebruikt.

Het is mogelijk om query parameters te gebruiken; dit zijn waardes die OpenAC bij het uitvoeren van de query aan de gebruiker vraagt and dan in de SQL statement ingevuld worden. Query parameters worden aangegeven met een parameter naam tussen dubbele accolades ({{ en }}). Dezelfde parameter naam mag meerdere malen gebruikt worden in de query, dan wordt die maar een keer gevraagd, en het is mogelijk om meerdere query parameters te gebruiken.

Onder het tekstvak voor de query is een veld maximum aantal waarmee de uitvoer van de query wordt beperkt. OpenAC gebruikt dan de eerste zoveel records die uit de query komen om de rapportagesheet op te stellen. Let op dat hiermee niet de query zelf beperkt wordt; gebruik daarvoor in de query (afhankelijk van het dialect) LIMIT of TOP. Als je dat niet doet, wordt een query als SELECT * FROM patient_data erg langzaam, zelfs als je maar 10 records in de sheet opneemt.

Een query kan vanuit dit bewerkingsscherm worden opgeslagen voor hergebruik, of ook direct worden uitgevoerd door op de knop uitvoeren te klikken. Hiermee kan een query ook worden getest voordat die wordt opgeslagen.

Query Voorbeeld

Deze hele eenvoudige query vertelt hoeveel patienten er in de database staan:

SELECT COUNT(1) FROM patient_data

Deze query vertelt hoeveel patienten er zijn met de geboortedatum 7 februari 1976 (in de database staan datums in YYYY-MM-DD opgeschreven):

SELECT COUNT(1) FROM patient_data
WHERE patient_geboortedatum = '1976-02-07'

Query Parameters

Het is natuurlijk onhandig om deze query om de haverklap aan te passen om de datum te veranderen (bijvoorbeeld om patienten te vinden van 29 december 1971), dus we kunnen de query aanpassen zodat OpenAC er om vraagt voordat de query wordt uitgevoerd:

SELECT COUNT(1) FROM patient_data
WHERE patient_geboortedatum = '{{geboortedatum}}'
AND patient_achternaam = '{{achternaam}}'

Merk op dat de parameter naam binnen de SQL-aanhalingstekens staat: anders zou je als onderdeel van de geboortedatum die ook moeten invoeren. OpenAC vervangt alleen de parameter naam met datgene door de gebruiker wordt ingevoerd.

Als er parameters in de query voorkomen, zal OpenAC bij het uitvoeren van de query een dialoog tonen waarin de parameters ingevuld kunnen worden. Het dialoogje ziet er (afhankelijk van de parameters die in de query staan) ongeveer zo uit:

OpenAC kent vanaf versie v2.006 vier soorten query parameters:

  • Datum Parameters zijn te herkennen aan het woord datum in de naam van de parameter. In het dialoogje verschijnen deze als datum-velden en OpenAC accepteert alleen een geldige datum. De datum wordt in OpenAC notatie in de query gezet (YYYY-MM-DD, vergeet niet zelf de SQL-quotes er omheen te zetten).
  • Vrije Tekst is door de gebruiker zelf in te vullen; OpenAC zet de tekst neer op de desbetreffende plek. Vergeet niet om de SQL-quotes er omheen te zetten, zoals bij '{{achternaam}}'.
  • Getallen hebben een # vooraan de naam van de parameter, zoals {{#jaar}}. De gebruiker mag alleen een getal invoeren. Bij rare invoer (zoals letters) interpreteert OpenAC dit als het getal -1. Dit kan je gebruiken om een jaartal in te laten vullen; afhankelijk van het preciese gebruik in de query moeten er wel of geen aanhalingstekens omheenstaan, bv. geboortedatum >= '{{#jaar}}-01-01' of drempel_verlies < {{#drempel}}.
  • Codes hebben een @ vooraan de naam. Deze verwijzen naar een specifieke codetabel, en de naam van de variabele moet overeenkomen met de naam van de codetabel. De gebruiker krijgt een selectie-box waaruit een van de codes van de tabel gekozen moet worden (de omschrijving van de code wordt niet getoond). Meestal moeten codes ook met aanhalingstekens gebruikt worden, zoals patient_geslacht = '{{@geslacht}}'.

Queries beschikbaar maken

Queries kunnen op twee manieren beschikbaar worden gemaakt:

  1. door ze publiek te maken
  2. door een of meerdere gebruikersgroepen te kiezen

Publieke Queries

Queries die publiek zijn worden aan alle gebruikers beschikbaar gesteld. Deze queries zijn te vinden onder de knop Query in het hoofdscherm. Als op deze knop gedrukt wordt, kan de gebruiker een keus maken uit alle beschikbare queries:

Als de query is uitgekozen en de gebruiker op OK klikt, dan worden de parameters van de query (als die er zijn) gevraagd. In dit voorbeeld is het een query met twee parameters, geboortedatum en achternaam. Als die zijn ingevuld wordt de query uitgevoerd en de resultaten getoond.

Gebruikersgroep kiezen

(vanaf versie 2.016) Om de toegang tot een query te beperken tot een of meerdere gebruikersgroepen kun je deze hier kiezen.

Last modified 6 years ago Last modified on Mar 13, 2018 5:41:50 PM

Attachments (6)

Download all attachments as: .zip