PICURED 2
Inleiding
PICURED (Pediatric Intensive Care Unit REsearch Database) heeft recent een nieuwe update ondergaan. PICURED staat eigenlijk voor een software systeem waarbij uit verschillende bronnen, waaronder nu ons huidige MetaVision PDMS en de PICE registratie, gegevens kunnen worden verzameld ten behoeve van onderzoek. De benodigde gegevens kunnen extern in een spreadsheet worden gedefinieerd en vervolgens, volgens deze definities, specifiek voor een onderzoeksvraag worden opgehaald en opgeslagen in een data tabel.
Data Definities
De inhoud van de gegenereerde PICURED tabellen kan worden gedefinieerd in een spreadsheet. Dit kan een online spreadsheet zijn, of een lokaal Excel bestand. De spreadsheet bevat de volgende bladen:
- Observations: In dit blad worden de kolommen gedefinieerd van de tabel waarin uiteindelijk alle verzamelde data wordt weggeschreven. Elke kolom is dus een observatie. De eerste twee kolommen van de tabel staat niet in de data definitie aangezien deze constant zijn, namelijk de patiënt id en de timestamp van de record (rij in de tabel).
- Sources: Elke observatie kan worden verzameld op basis van 1 of meer bronnen. Deze bronnen kunnen worden geïdentificeerd via een id of een naam.
- Convert: Hierin kan per bron (source) worden aangegeven welke conversies worden uitgevoerd. Dat betekent dat de ruwe bron data wordt omgezet volgens een specifieke functie. B.v. de ‘convert functie’ vent_ mode kan worden gebruikt om een gecodeerde beademingsmodus om te zetten naar een meer generieke modus omschrijving.
- Filter: De inhoud van de bronnen (‘sources’) kunnen per observatie worden gefilterd. B.v. voor de observatie mon_cvp, de gemeten centraal veneuze druk op de monitor, kan gefilterd worden op alleen gevalideerde waarden m.b.v. de mon_cvp filter. Er kunnen meerdere filter functies worden toegepast op 1 observatie.
- Collapse: Indien de waarde van een observatie kan worden afgeleid uit meerdere bronnen dan kan een ‘collapse’ functie worden toegepast. B.v. voor de observatie obs_fb_urine met als bronnen: 6863 en 6862, hetgeen staat voor katheter gemeten urine en urine porties, kan worden opgeteld tot een totaal urine met behulp van de ‘sum’ functie. Een collapse functie kan ook een berekening zijn zoals bij de calc_oi functie die o.b.v. de bronnen FiO2, MAP en pO2 uitrekent wat de oxygenatie index is.
Dit maakt het mogelijk om voor verschillende data bronnen (PDMS systemen, landelijke registraties, lokale data bronnen, etc..) een complete data dictionary te creëren. Onderzoekers kunnen vervolgens o.b.v. de de dictionary keuzes maken welke observaties voor hun onderzoeksvraag van belang zijn. De dictionary kan ook gemakkelijk worden uitgebreid bij nog missende observaties.
Signals
Alle data komt het systeem binnen als zogenaamde ‘signals’. Een signal is een data punt voor een patiënt die geldt voor een specifieke datum tijd, periode of de patiënt (dan is er geen datum tijd of periode). Een signal bevat de volgende eigenschappen:
- Id of naam ter identificatie van het signaal
- De id voor de patient
- De periode, datum tijd, of geen datum tijd
- De waarde
Signalen met een specifieke datum tijd worden gegroepeerd per patiënt per datum tijd. De signalen met een periode of geen datum tijd worden vervolgens verdeeld:
- Signalen met een bepaalde periode worden verdeeld over de betreffende periode bij de betreffende patiënt.
- Signalen zonder datum tijd worden toegevoegd bij alle signalen van de betreffende patiënt.
De gegroepeerde lijst van signalen wordt vervolgens gebruikt om per patiënt, datum tijd en observatie een waarde te genereren. De lijst van observaties is gespecificeerd volgens de eerder beschreven data definities. Het algoritme werkt als volgt:
- Een record wordt bepaald door een patiënt, datum tijd groep.
- De kolommen van dat record wordt bepaald door de lijst van te generen observaties.
- Voor de betreffende patiënt, datumtijd wordt per observatie alle bijbehorende signalen gezocht. De signalen worden geïdentificeerd door de lijst van bronnen behorende bij de observatie.
- De oorspronkelijke waardes van de signalen worden eerst geconverteerd, dan
- Worden de signalen gefilterd en vervolgens
- Samengevoegd tot 1 waarde voor de observatie
Zo ontstaat een tabel waarbij elke rij een specifiek moment in de tijd is voor een patiënt met de daarbij behorende observaties.
Software
De benodigde software bestaat uit verschillende componenten.
- Databronnen: MetaVision Database (PDMS), de PICE Registry of een andere Any Other Database
- Import libraries, MetaVision Import, PICE Import die zorgen dat de data uit de verschillende databronnen wordt omgezet naar de bovenbeschreven signalen.
- Aanvullende libraries, om zoals PIM & PRISM calculations die de benodigde PIM en PRISM scores kan uitrekenen.
- De Observations library die signalen volgens Definities kan omzetten naar de uiteindelijke data tabel.
- PICURED die met behulp van de import libraries en de Observation library de data set kan wegschrijven naar:
- De PICURED database waar de gegenereerde datatabellen kunnen worden weggeschreven.
De stappen die hierbij worden genomen zijn:
- Import uit het PDMS (omzetten van data naar signalen)
- Import uit de landelijke PICE registratie (omzetten van data naar signalen)
- Berekening van de benodigde risico scores vanuit de ruwe PICE data (deze worden ook omgezet naar signalen)
- Verzameling van alle gegenereerde signalen en
- Omzetten naar een observatie data set (de platte tabel) m.b.v.
- De data definities en
- Vervolgens wegschrijven van de gegenereerde dataset naar de PICURED database.
Performance
Om te zorgen dat alle data verwerkt kan worden zijn er extra maatregelen nodig betreffende:
- Geheugen: De data wordt per patiënt per tijdsepisode opgehaald. Dit voorkomt dat bij lang liggende patiënten met veel data het geheugen volloopt.
- Snelheid: De data wordt per patiënt opgehaald. In plaats van elke patiënt 1 voor 1 op te halen kan het systeem tegelijkertijd meerdere patiënten verwerken. Bij de verdeling van de patiënten wordt dan na de verwerking van een patiënt terug gerapporteerd wanneer dit klaar is zodat de volgende patiënt kan worden verwerkt. Deze systematiek kan programmeer technisch worden omschreven als parallel en asynchroon.
Bovenstaande maakt het ook mogelijk om op te schalen om vooral de snelheid van de verwerking te verhogen.
Anonimisatie
Het systeem kan automatisch de gegevens anonimiseren door de patiënt id om te zetten naar een zogenaamde GUID, een random combinatie van cijfers en letters en dat datum tijd van een record om te zetten naar het aantal minuten na de eerste record van de patiënt.
Overige anonimisatie kan plaats vinden door enerzijds:
- Privacy gevoelige data weg te laten (b.v. specifieke diagnoses) of
- Data om te zetten naar niet herleidbare alternatieven (b.v. gewicht naar gewicht groep).
Ook kan nog in de data definitie per observatie worden aangegeven of deze privacy gevoelig is zodat dit proces ook meer automatisch plaats vindt.
Resultaat
Het resultaat is een platte tabel waarbij de kolommen zijn bepaald door de gehanteerde data definities. Een recente extractie van de afgelopen 10 jaar heeft een week gedraaid met als resultaat een tabel met:
- 89.065.704 records van
- 6.412 patiënten met
- 13.507 opnames
- per record 137 kolommen
De tabel bevat:
- Alle opname periodes, afdeling, opname specialisme
- PICE diagnoses, verwachte mortaliteit en daadwerkelijke uitkomst
- Alle belangrijke lab data
- Alle belangrijke monitor data
- Alle beademingsdata
- Vocht in/uit en diurese data
- Alle microbiologische uitslagen uit bloed, liqour, urine of overige
- Alle voorgeschreven medicatie betreffende antibiotica, inotropie, sedatie en diuretica
- De duur per episode van tube, arterlijn, CVL en urine katheter
- Berekende waarden, de OI
Voor specifieke onderzoeksvragen kan dus, on the fly, deelverzamelingen van de bovenstaande gegevens voor specifieke patiëntgroepen worden geëxtraheerd. Ook kan desgewenst de data set verder worden uitgebreid.
Mooi werk Casper en heldere uitleg