Eenvoudige data-mining in de Mosaiqdatabase Roel de Boer Antoni van Leeuwenhoek Amsterdam
Antoni van Leeuwenhoek Amsterdam
Roel de Boer explains it all !
Vragen uit de afdeling (1) Management • Hoeveel verwijzingen vanuit elk ziekenhuis? per patientengroep / per periode / per postcode ?
• Hoeveel verwijzingen vanuit elke regio? per patientengroep / per periode / per leeftijdsgroep ?
• Verdeling van de T1-T4 of T0-T7 of A0-A7 over: periodes / patientgroepen / artsen / toestellen
• Verdeling patientengroepen over de toestellen? Veranderingen in de tijd?
• Doorlooptijden (aanmelding start RT): per periode / patientgroep / ….
Vragen uit de afdeling (2) Kliniek / artsen • Lijst van sarcoompatienten >3000cGy • Aantal mammapatienten met elektronen • Aantal mamma met oksel
Fysica • Hoe vaak worden elektronen gebruikt? welke indicaties? is het gebruik de afgelopen jaren toegenomen?
• Idem voor 18 MV bestralingen • Gebruik van IMRT / VMAT / hypo-bestralingen. • Kaart-controle: zoek vijf recente bijnier-hypo patienten.
Probleemstelling: • Alles staat in Mosaiq. • Je kunt alle gegevens uit Mosaiq halen. • Indien standaardvragen: standaard-rapportages (Crystal of anders). • Maar vaak: behoefte aan ad-hoc gegevens. NU! Oplossing: zet dagelijks de Mosaiq-database om in een Excel-tabel “MiniDB” met de essentiele gegevens.
Dan: “data-mining” in deze tabel mbv Excel: filteren / sorteren / kruistabel / grafieken
Intermezzo: Data-structuur Antoni van Leeuwenhoek • Diagnose: • Careplan:
nieuw bezoek aan arts behandeling van een tumor (= DBC)
Twee plekken (rib + heup) twee careplannen. 60 careplan-namen (prostaat, prostaatloge, prostaat + bekken, …) 10 careplan-groepen (urologie, mamma, gyn, GE, ..)
• RadRx/Site:
planning = “stralenkaart”
– Fotonen + elektronen: – Fotonen + surdo: – Mamma + surdo + oksel:
twee RadRx’en twee RadRx’en drie RadRx’en
MiniDB Excel-file: elke RadRx is een regel – Wil je alleen de careplannen tellen? Filter op “RadRx_nr = 1”
Careplan
T1-T4 code (ingevuld door planning)
D&I scherm
Diagn. #1 1 CP/course/DBC Diagn. #2 2 CP’s/courses/DBC’s
D&I scherm
Diagn. #1 1 CP/course/DBC Diagn. #2 2 CP’s/courses/DBC’s
Methode: Mosaiq Excel • Dagelijks 6h00: run een automatisch Crystal Report. Duur: ca. 3 minuten.
• Output: Excel-file “MiniDB.xls”: overzicht van alle RadRx-en (= stralenkaarten). Vanaf 2009. Nu (mei 2013): 27.000 records, 15 MB
Techniek: Mosaiq Excel Tabellen:
1. SQL-query
(gemaakt binnen Crystal):
SELECT "PatCPlan"."Course", "Topog"."Description", "Topog"."Diag_Code", "CPlan"."CPlan_Name", "Medical"."Dx_DtTm", "Patient"."Last_Name", "Ident"."IDA", "PatCPlan"."Edit_DtTm", "PatCPlan"."Ext_Rad", "Site"."Site_Name", "Dose_Hst"."Tx_DtTm", "PatCPlan"."PCP_ID", "Staff_Toestel"."Last_Name", "Site"."SIT_SET_ID", "Patient"."Birth_DtTm", "Admin"."Gender", "Admin"."Pat_Postal", "Staff_Attending"."Last_Name", "Facility"."Name", "Ident"."Version", "Site"."Version", "Dose_Hst"."WasQAMode", "Site"."Create_DtTm", "TxField"."Modality_Enum", "TxField"."Type_Enum", "Dose_Hst"."Energy", "Dose_Hst"."Meterset", "Dose_Hst"."cGrayPerMeterset", "Dose_Hst"."Fractions_Tx", "Site"."Dose_Tx"
FROM ((((((((((("MOSAIQ"."dbo"."PatCPlan" "PatCPlan" LEFT OUTER JOIN "MOSAIQ"."dbo"."Patient" "Patient" ON "PatCPlan"."Pat_ID1"="Patient"."Pat_ID1") FULL OUTER JOIN "MOSAIQ"."dbo"."Medical" "Medical" ON "PatCPlan"."MED_ID"="Medical"."MED_ID") LEFT OUTER JOIN "MOSAIQ"."dbo"."CPlan" "CPlan" ON "PatCPlan"."CPL_ID"="CPlan"."CPL_ID") LEFT OUTER JOIN "MOSAIQ"."dbo"."Site" "Site" ON "PatCPlan"."PCP_ID"="Site"."PCP_ID") LEFT OUTER JOIN "MOSAIQ"."dbo"."TxField" "TxField" ON "Site"."SIT_SET_ID"="TxField"."SIT_Set_ID") LEFT OUTER JOIN "MOSAIQ"."dbo"."Dose_Hst" "Dose_Hst" ON "TxField"."FLD_ID"="Dose_Hst"."FLD_ID") LEFT OUTER JOIN "MOSAIQ"."dbo"."Staff" "Staff_Toestel" ON "TxField"."Machine_ID_Staff_ID"="Staff_Toestel"."Staff_ID") LEFT OUTER JOIN "MOSAIQ"."dbo"."Ident" "Ident" ON "Patient"."Pat_ID1"="Ident"."Pat_Id1") LEFT OUTER JOIN "MOSAIQ"."dbo"."Admin" "Admin" ON "Patient"."Pat_ID1"="Admin"."Pat_ID1") LEFT OUTER JOIN "MOSAIQ"."dbo"."Staff" "Staff_Attending" ON "Admin"."Attending_Md_Id"="Staff_Attending"."Staff_ID") LEFT OUTER JOIN "MOSAIQ"."dbo"."Facility" "Facility" ON "Admin"."Ref_From_FAC_ID"="Facility"."FAC_ID") LEFT OUTER JOIN "MOSAIQ"."dbo"."Topog" "Topog" ON "Medical"."TPG_ID"="Topog"."TPG_ID"
WHERE "Ident"."Version"=0 AND "Site"."Version"=0 AND
NOT ("Patient"."Last_Name" LIKE 'aaa%' OR "Patient"."Last_Name" LIKE 'zz%') AND "Topog"."Diag_Code"<>'D888' AND "Dose_Hst"."WasQAMode"=0 AND (("Ident"."IDA">='200' AND "Ident"."IDA"<='250') OR ("Ident"."IDA">='500' AND "Ident"."IDA"<='9999999'))
ORDER BY "Ident"."IDA", "PatCPlan"."PCP_ID", "Site"."SIT_SET_ID", "Dose_Hst"."Tx_DtTm"
2. Groepering / filtering / sommering binnen Crystal.
3. Export vanuit Crystal naar Excel. Klaar.
Voorbeeld: 1 patient, 1 RadRx StatusNr Postcode Age sexe Verwijzer Arts DiagnoseDatum Description CP_type CPlan_Name Course Xcode
20802480 2141 70 V NKI/AVL Kwint 2-7-2012 Mamma META Botmeta 7 X2
SiteNr 1 KnieRe <851 Site_Name 9-7-2012 Start bestr. 9-7-2012 Laatste bestr. Fractiedosis 800 1 #fracties Sitedosis 800 2 NFields 2 NF_tot TB4 Toestel Fix Tr_type X Entype 6 Min_En 6 Max_En
Drie behandelingen, waarvan één met twee RadRx’s (stralenkaarten) StatusNr 20802480 20802484 20802484 20802524 2141 2134 2134 1111 Postcode 70 60 60 50 Age V V V M sexe NKI/AVL Kennemer Gasthuis Kennemer Gasthuis NKI/AVL Verwijzer Kwint Vries, de Vries, de Knegjens Arts 2-7-2012 25-2-2013 25-2-2013 7-1-2010 DiagnoseDatum Mamma Mamma Mamma Tr.Respiratorius Description META MAMMA MAMMA ORTHO CP_type Botmetastasen Borstwand + Oksel Borstwand + Oksel Orthovolt CPlan_Name Course 7 2 2 2 X2 X4 X4 X1 Xcode SiteNr 1 1 2 1 KnieRe <851315> TIVirtR <351013> ELEKTR. scapula re Site_Name 9-7-2012 15-4-2013 23-4-2013 21-1-2010 Start bestraling 9-7-2012 22-4-2013 7-5-2013 21-1-2010 Laatste bestraling Fractiedosis 800 266 266 800 1 6 10 1 #fracties Sitedosis 800 1596 2660 800 2 1 1 1 NFields 2 6 10 1 NF_tot TB4 TA1 TA1 T3 Toestel Fix Fix Fix Fix Tr_type X X E O Entype 6 10 15 270 Min_En 6 10 15 270 Max_En
MiniDB excel-sheet
(90° gedraaid tov vorige dia)
30 kolommen
27.000 regels
MiniDB excel-sheet: voorbeeld Voorbeeld-vraag: In 2013: hoeveel behandelingen (standaard / IMRT / VMat) per patientgroep? kruistabel
Aantal Fix IMRT VMAT Totaal Urologie 12
14
27
53
Mamma
6
33
1
40
Totaal
18
47
28
93
Definieer kruistabel
Resultaat (1 minuut)
SiteNr
Start jaar
Count of Stnr
600 500 400 300
200 100 0
CP_type
Hieruit: grafiek (1 click) Tr_type
VMAT
IMRT Fix
Gebruik van fotonen/elektronen energieen per jaar Aantal Stralenkaarten Count Entype
X
Start jaar Max_En 2009 31 4 1,956 6 2,491 10 583 18
2010 19 1,861 2,943 403
2011 4 1,300 3,823 102
1,168 4,352 47
Total 54 6,285 13,609 1,135
5,061
5,226
5,229
5,567
21,083
20 77 85 98 109 21 14
27 60 55 56 22 8 4
26 37 39 29 20 3 1
48 61 64 35 20 3 2
121 235 243 218 171 35 21
424
232
155
233
1,044
5,485
5,458
5,384
5,800
22,127
X Total
E
6 8 10 12 15 18 20
E Total
Grand Total
10 minuten werk
2012
5000 4500 4000 3500 3000 2500 2000 1500 1000 500 0
6
2009
2010
2011
2012
8 10 12 15 18 20 4 E
6 10 18 X
Etc. voor alle andere vragen…….
Antoni van Leeuwenhoek
Roel de Boer explains it all !
Amsterdam
Conclusie • Standaard-rapporten: Crystal/SQL/.... is de goede methode. • Voor ad-hoc vragen: Excel-sheet is zeer praktisch. • Nodig: basiskennis Excel • Filteren • Sorteren • Pivottable / Kruistabel • Grafieken