wiki:Documentatie/Beheerder/Installeren/Database

Database

Wanneer u OpenAC inlogt als admin beschikt u over diverse database-beheersfuncties onder het menu beheer naast bestand, bewerken etc.

Datastructuur bijwerken

Tijdens het opstarten controleert OpenAC of alle tabellen en velden in de database in overeenstemming zijn met het datamodel. Wanneer er verschillen zijn, werkt OpenAC grotendeels automatisch bij, voor zover dat veilig kan. Zijn er wijzigingen nodig die niet zomaar kunnen worden uitgevoerd, zoals aanpassen of verwijderen van een veldje, dan vraagt OpenAC of de beheerder expliciet opdracht wil geven tot aanpassen van het datamodel.

Doe dit voor dat alle gebruikers op de versie in kwestie zijn overgestapt. Het sessiescherm, dat de mogelijkheid biedt om berichten te sturen naar OpenAC gebruikers, kan hier van dienst zijn.

OpenAC kàn niet bijwerken als er tabellen of velden in gebruik zijn. OpenAC blijft daar op hangen en loopt dan langzamerhand vast voor alle gebruikerssessies. Dit is op te lossen met de database console voor MySQL op de server met het volgende commando:

show processlist

Daar vind je de query die het systeem laat hangen. (Dit is niet terug te vinden in het bovenstaande screenshot.) Er staat dan 'Waiting' of iets dergelijks achter. Dat proces kun je stoppen door de query

kill 58

Achter kill zet je het nummer van het ID dat aan het vastlopen is. OpenAC schiet direct uit z'n vastlopen, maar hij is dan nog niet bijgewerkt op dat moment. Wellicht moet dat dan een keer later wanneer er geen andere gebruikers in het systeem zitten.

Bij MicrosoftSQL Management Studio bereik je hetzelfde effect via New Query met sp_who.

Integriteitscheck

Door gebruik van OpenAC kunnen kleine inconsistenties optreden in de database. Deze kunnen worden opgeruimd middels Beheer, Integriteitscheck. Wanneer deze functie voor het eerst wordt uitgevoerd, schrikt men soms van het aantal fouten dat wordt opgelost.

Hoewel het altijd aan te raden is eerst een backup te maken, is het gebruik van deze functie een relatief veilige aangelegenheid. Hoe langer de fouten blijven bestaan, hoe meer nieuwe inconsistenties erbij kunnen komen.

Bij recente versies van OpenAC moeten er niet meer dan enkele inconsistenties bijkomen. Heeft u er meer dan 10 per maand (na een eerste keer), dan kan het goed zijn contact op te nemen met het bureau.

Tabel doorrekenen

In een enkel geval is het nodig een hele tabel in de OpenAC-database opnieuw door te rekenen. Concreet:

  • Het dossierscherm heeft zijn eigen doorrekenfunctie, die bovendien de mogelijkheid heeft om een selectie op te geven.
  • Wanneer alle plangroepen worden gewijzigd, kan de sortering van de medewerkers veranderen. De tabel rooster_item dient dan opnieuw te worden doorgerekend, anders worden de rooster-items in het beheerscherm voor het rooster niet consequent gesorteerd weergegeven.

Importeren uit…

Afhankelijk van de adaptatie van OpenAC kunnen onder deze menuregel één of meerdere importfuncties zitten.

Backup / Restore

In het menu beheer, submenu Backup/restore... staan opties voor het maken van datasets en terugzetten van backups, en het veilig verzenden van gegevens uit OpenAC aan de FENAC.

Backup maken

Met dit item maakt u een OpenAC-backup. Dit is een map met tab-separated bestanden, één bestand per tabel in de OpenAC-database.

Wij raden af om backups te maken tijdens productietijd. Dit kan tot gegevensverlies leiden.

Backup terugzetten

Met dit item kunt u een OpenAC-backup (directory met TSV-bestanden) terugzetten. U kiest in de regel voor 'bestanden leegmaken voor terugzetten', tenzij u een gedeeltelijke backup wilt terugzetten (data toevoegen aan een bestaande database).

Geanonimiseerde backup maken en versturen

Met dit item maakt u een TSV-dataset waarbij persoonsgegevens en tekstnotities onherleidbaar zijn gemaakt (uitgezonderd zijn de geboortedatum en - vooralsnog - de 4 cijfers van de postcode, alsmede keys in de database zoals patientnummers). De geboortedatum is nodig omdat de anonieme datasets anders niet leiden tot dezelfde geaggregeerde gegevens (o.a. andere AP-producten). De gegevens worden niet alleen lokaal opgeslagen, maar worden ook verstuurd aan de FENAC. Gebruik deze functie om periodiek een dataset naar de branchevereniging te sturen in het kader van de landelijke afspraak (4x per jaar) over dataverzameling.

De gegevens worden verstuurd naar https://www.fenac.nl/openac/upload/ . De ICT afdeling van de FENAC krijgt hiervan bericht en kan laten weten wanneer de backup goed verlopen is.

Backup van één of meer dossiers

Met dit item maakt u een OpenAC-backup van één of meer dossiers. Deze kan naar keuze alleen lokaal worden opgeslagen, of worden verstuurd aan de FENAC bijvoorbeeld voor de FENAC ICT helpdesk om problemen met OpenAC op te lossen.

U vult hier een of meer dossiernummers in, gescheiden door komma's, en die worden elk afzonderlijk als backup opgeslagen. Let op: de patientnummers blijven staan in de selectie, ook voor de volgende keer dat u deze backup maakt. Let op: de selectie of u wel-of-niet de backup naar de FENAC stuurt, blijft staan voor de volgende keer. Controleer daar extra op. Zie ook #2798.

Backup van één of meer dossiers terugzetten

Met dit item zet u een backup van enkele dossiers terug. Deze functie kan worden gebruikt om bijvoorbeeld uit een oude backup enkele dossiers terug te zetten in de productie-omgeving. Uiteraard moet deze functie met enige zorgvuldigheid worden toegepast.

Periodiek een backup maken

Er zijn drie mogelijkheden voor het maken van backups van de OpenAC-database.

  • OpenAC-backups. De OpenAC-backups bieden meer flexibiliteit met betrekking tot terugzetten. Maak eerst handmatig een backup: log in, kies in het menu beheer, submenu Backup/restore de optie backup maken... en vul de map in waar je backups wilt verzamelen. Breek eventueel het backup-proces af, het gaat erom dat je de instellingen goed invoert. Stel het volgende commando in als "taak" onder Windows (laat de taak uitvoeren door dezelfde windows-gebruiker die al een keer handmatig een backup heeft gemaakt):
    Beginnen in : C:\Program Files\OpenAC
    Uitvoeren: Python27\python.exe script.py backup
    
  • Maak een backup met het programma 'mysqldump'. Deze worden sneller gemaakt, waardoor je vaker een backup kunt draaien.
    mysqldump --opt --user=gebruikersnaam --password=password naam_database > openac_backup.sql
    
  • Kopieer het bestand 'ibdata' in de MySQL-data-dir. Dit is alleen een 'last-resort' of extra veiligheid.

Database wissen…

Deze optie wordt alleen gebruikt tijdens de uitrol van een nieuwe OpenAC en het testen van een importprocedure.

Tabel leegmaken…

Deze optie wordt alleen gebruikt tijdens de uitrol van een nieuwe OpenAC en het testen van een importprocedure.

Databeleid FENAC

Dit is een bondige weergave van het voorlopige beleid. De FENAC is bezig het databeleid (Q4/2009) te formaliseren in een dataconvenant.

Datasets met niet geanonimiseerde gegevens (één of meer dossiers) worden vernietigd nadat de betreffende ondersteuningsvraag is beantwoord. Van de datasets met geanonimiseerde gegevens wordt maximaal één kopie bewaard.

De gegevens die naar de FENAC webserver worden verstuurd, worden beveiligd verzonden via HTTPS. FENAC ICT krijgt bij de start en aan het eind van de backup een e-mailbericht. Zij halen de gegevens zo snel mogelijk, uiterlijk binnen 1 dag weer van de FENAC server af en slaan de dataset op op een beveiligde schijf binnen het lokale netwerk van Bureau AudCom voor FENAC en Siméa. Wanneer een backup-procedure onverhoopt wordt afgebroken, worden de al verstuurde bestanden van de incomplete backup automatisch na 4 uur vernietigd. Off site backups van de gegevens bij Bureau AudCom zijn alleen te lezen met een wachtwoord dat slechts bij FENAC ICT bekend is.

Datamodel

Vanuit het startscherm van OpenAC kan de beheerder inzicht verkrijgen in hoe het logische datamodel van OpenAC in elkaar zit. Dit is waar OpenAC zelf mee rekent. Het datamodel wordt ingelezen uit de structuur.tsv bestanden; de weergave in het datamodel-scherm is makkelijker te begrijpen. De fysieke database wordt dan weer afgeleid van het logische datamodel volgens bepaalde regels (die afhankelijk zijn van de database die je gebruikt).

Om het logisch datamodel te kunnen vertalen naar het fysieke datamodel moet je weten welke regels OpenAC toepast. Bij relaties is dit ondermeer afhankelijk van het koppeltype.

Enkele vertaalregels van het logische naar het fysieke model:

  • toptabellen en subtabellen krijgen in het fysieke model de suffix "_data"
    • patient -> patient_data
    • postadres -> postadres_data
  • velden krijgen de prefix "<tabelnaam>_"
    • patient:key -> patient_data.patient_key
  • koppel- of tussentabellen vind je (op een enkele uitzondering na) niet terug in het logisch datamodel. Je kunt ze afleiden uit het koppeltype van de relatie.
  • ook foreign keys vind je niet terug in het logisch datamodel, deze kun je eveneens afleiden uit het koppeltype van de relatie.
  • relaties worden in het datamodel weergegeven als tabel(<tabelnaam>) of code(<tabelnaam>)
    • patient:adressen tabel(postadres) is een relatie tussen tabel patient_data en postadres_data. De naam van de relatie is "adressen" en het koppeltype bepaalt of OpenAC een tussentabel aanmaakt en in welke tabel de foreign key komt.
  • Koppeltypes vind je terug in het structuurscherm. Enkele voorbeelden van koppeltypes:
    • Meerwaardig veld (subtabel of tussentabel). Een voorbeeld van dit koppeltype is patient:adressen. Bij een koppeling tussen een toptabel en een subtabel dan komt de key van de toptabel als foreign key in de subtabel. postadres_data heeft daarom foreign key patient_key. Bij een koppeling tussen twee toptabellen of een toptabel en een codetabel maakt OpenAC een koppeltabel aan.
    • Doelkey in moedertabel. Een voorbeeld van dit koppeltype is notaregel:traject, gedefinieerd als notaregel:traject tabel(fin-traject). notaregel_data krijgt als foreign key traject_key.
    • Moederkey in doeltabel. Dit is het default koppeltype. Als er geen koppeltype staat bij de opties van de relatie, dan betreft het koppeltype "moederkey in doeltabel". Voorbeeld: behandeling:verwijzing, verwijzing_data heeft behandeling_key als foreign key.
  • De naamgeving voor koppeltabellen is <tabelnaam1>_<relatienaam>
    • behandeldag:bestanden tabel(bestand) wordt dus behandeldag_bestanden. Een koppeltabel heeft vaak een samengestelde primary key, in dit geval zowel behandeldag_key als bestand_key. Beide velden zijn foreign key.
  • Virtuele velden staan in het logisch datamodel maar vind je niet terug in het fysieke datamodel. De waarde van een virtueel veld wordt door OpenAC berekend. Of een veld virtueel is of niet kun je opzoeken in het structuurscherm, net als bij de koppeltypes.
Last modified 7 years ago Last modified on May 8, 2017 4:50:27 PM

Attachments (3)

Download all attachments as: .zip