Labcodeset onderhoud
Onderhoud
Database structuur
In de collectie data/lab_concepts zit een <lab_concept> element per rij in de LCS. Hierin zit het Engelse en Nederlandse LOINC concept zoals uit LOINC geïmporteerd. DE Nederlandse Long Common Name wordt gegenereerd, deze wordt toegevoegd bij gebruik van de functies in api-labterm.xqm.
Er zijn meer children in <lab_concept>: materials, units, outcomes en errors. Voor errors zie de gebruikershandleiding. De andere bevatten <material> of <unit> een of <valueSet> met een @ref attribuut wat wijst naar een @id in de collecties materials.xml, units.xml of ordinals.xml. Er is ook een methods child mogelijk, maar dat wordt (nog?) niet gebruikt.
Lab concepts leunen erg op de Panels. De panel structuur wordt geimporteerd uit loinc.
Naast de lab_concepts zijn er nog:
- local_panels, met de Nederlandse varianten op internationale panels
- loinc-system-to-snomed: een mapping tabel tussen System en Snomed, meestal children van Specimen (maar niet altijd)
- materials, units, ordinals, nominals met de te gebruiken bronnen. Er is maar een nominale lijst, deze is nu hard-coded aanwezig
- prerelease, hierin kunnen concepten uit de LOINC prerelease tabel opgenomen worden. De prerelease HTML tabel kan ingelezen worden met een Jupyter Notebook.
- old_data, hierin zitten data van voor een LOINC-upgrade, wordt automatisch overschreven de volgende keer
Rijen uit units en materials mogen nooit verwijderd worden, uitgegeven id's moeten uniek blijven, deze moeten status=retired krijgen als ze niet meer gebruikt worden.
Nieuwe LOINC release
Wanneer er een nieuwe release van LOINC geïnstalleerd is, moeten de concepten in de Labcodeset bijgewerkt worden. Dat gebeurt door een eXist gebruiker met 'dba' rechten, door het draaien van de XQuery (in helpers) 'update-from-loinc.xquery'.
Deze zal:
- LOINC concepten vervangen door de nieuwere LOINC concepten
- Controleren of status LOINC <> ACTIVE is voor concepten die wel active zijn in LCS
- Alle assen behalve Component (dus: System, Property, Timing, Scale, Method) controleren op wijzigingen tussen de LCS versie en de nieuwe LOINC versie
- Foutmelding toevoegen voor beide bovenstaande issue.
LET OP! Na draaien: controleren en verwijderen van old-data als alles goed gegaan is.
Bijwerken LOINC-Snomed mapping
In de LOINC-Snomed tabel (loincsystem-to-snomed.xml) zitten de mappings tussen LOINC System en Snomed concepten. Voor één LOINC System kunnen meerdere rijen voorkomen, b.v. LOINC System "Bld/Tiss" mapt op Snomed concept "Blood (Specimen)" en "Tissue (Specimen)". Deze tabel is geïmporteerd uit de LOINC-Snomed mapping van Regenstrief. Daarnaast zitten er rijen in die niet in die mapping zitten, dat zijn de "dubbele" Systems (Bld/Tiss) en aparte gevallen (^Mother).
Publicatie
Gebruikers kunnen een publicatie maken. Het publicatieproces genereert:
- lab-concepts-full-{timestamp}.xml, dit is de uitvoer van het publicatieproces.
- lab-concepts-{timestamp}.xml, een vereenvoudigde versie, gemaakt met simplify-publication.xsl, dit is de te publiceren versie. Door de 2-fasen aanpak is het eindgebruikersformaat eenvoudig aan te passen.
- lab-concepts-{timestamp}.html, een leesbare versie, gemaakt uit de full-versie met publicatie2html.xsl.
Noot: de eerste publicatie kent deze 3 varianten niet, alleen een lab-concepts-{timestamp}.xml met een 'full' versie erin.
Diffs
Worden gemaakt met diff-publications.xquery, nu nog vanuit de db, UI is todo. Input zijn twee timestamps zoals die in @effectiveDate in een publicatie zitten. Als invoer worden 2 full publicaties gebruikt. Uitvoer is:
- diff-{timestamp}-{timestamp}.xml
- diff-{timestamp}-{timestamp}.html