Progetto Sperimentale sull'ADI
5 partecipanti
Pagina 2 di 2
Pagina 2 di 2 • 1, 2
Re: Progetto Sperimentale sull'ADI
GiampiMaz ha scritto:In relazione agli scopi dell'estrazione l'ho modificata non escludendo i pazienti deceduti nell'anno in esame (ho dovuto includere i revocati poichè attualmente millewin mette revoca automaticamente in caso di decesso), e mettendo la data del decesso, il motivo e i giorni di sopravvivenza dall'ultimo evento tra quelli considerati.
In questo modo si sono aggiunti alcuni pazienti, tra l'altro un paio che erano stati effettivamente messo in ADI per un K e ictus.
giampiero
SELECT distinct CAST ('2010-12-31' AS DATE) AS fine, p.cognome, p.nome, p.codice_fiscale, days(p.nascita, fine)/365 eta,
(select list (distinct x.nome_pbl) from cart_pazpbl x where x.codice=p.codice and ( x.cp_code like '431%' or x.cp_code like '436%' or x.cp_code like '821%' or x.cp_code like '707%' or x.cp_code like '518.81' or x.cp_code like '332.0' or x.cp_code like '15%' or x.cp_code like '162%' or x.cp_code like '174%' or x.cp_code like '182%' or x.cp_code like '201.9%' or x.cp_code like '193%' or x.cp_code like '799.4') and x.data_open between (fine - 365) and fine ) as _problem_,
(select count ( x.codice) from cart_accert x where x.codice=p.codice and x.ac_tipo like 'RIC' and x.data_open between (fine - 365) and fine ) as ricoveri,
(select list ( x.ac_des) from cart_accert x where x.codice=p.codice and x.ac_tipo NOT IN ('AN','BS','ED','FAM','RSA','STI','TST','V','VIS','RIC') and x.rowid_master IS NULL and x.data_open between (fine - 365) and fine ) as _esami_,
(select count ( x.codice) from cart_accert x where x.codice=p.codice and x.ac_tipo NOT IN ('AN','BS','ED','FAM','RSA','STI','TST','V','VIS','RIC') and x.rowid_master IS NULL and x.data_open between (fine - 365) and fine ) as num_es,
p.decesso, p.Pa_Cmorte as causa,
if p.decesso is not null then
(select cast(p.decesso - max(x.data_open) as INT) from cart_pazpbl x where x.codice=p.codice and ( x.cp_code like '431%' or x.cp_code like '436%' or x.cp_code like '821%' or x.cp_code like '707%' or x.cp_code like '518.81' or x.cp_code like '332.0' or x.cp_code like '15%' or x.cp_code like '162%' or x.cp_code like '174%' or x.cp_code like '182%' or x.cp_code like '201.9%' or x.cp_code like '193%' or x.cp_code like '799.4') and x.data_open between (fine - 365) and fine ) endif as G_soprav_
FROM pazienti p, nos_002 n, cart_pazpbl pr
WHERE p.codice=n.codice AND p.codice=pr.codice
AND eta > 65
AND (pr.cp_code like '431%' or pr.cp_code like '436%' or pr.cp_code like '821%' or pr.cp_code like '707%' or pr.cp_code like '518.81' or pr.cp_code like '332.0' or pr.cp_code like '15%' or pr.cp_code like '162%' or pr.cp_code like '174%' or pr.cp_code like '182%' or pr.cp_code like '201.9%' or pr.cp_code like '193%' or pr.cp_code like '799.4')
AND pr.data_open between (fine - 365) and fine
AND (n.pa_drevoca IS NULL or (n.pa_drevoca > (fine-365) and p.decesso=n.pa_drevoca) ) AND (p.decesso IS NULL or p.decesso > (fine-365) )
AND p.pa_convenzione='S'
AND n.pa_medi = 'XXXXXX'
Order by 2,3,4
Caro Giampiero, da una attenta analisi della tua query ho rilevato che parecchi pazienti non compaiono nell'elenco. In effetti compaiono i pazienti con problemi insorti soltanto nell'anno relativo alla ricerca (2010), cioè se il problema è stato codificato in data 2009 o 2008, non compare. Ora se la patologia è insorta ed. es. nel 2009 (quindi codificata nel 2009) e poi si è aggravata nel 2010 sarebbe opportuno che compaia nell'elenco.
Ciao.
aditroia- Membro Junior
- Messaggi : 191
Punti : 5285
Voti per importanza dei messaggi : 4
Data d'iscrizione : 24.02.11
Re: Progetto Sperimentale sull'ADI
Ciao, come scrivevo all'inizio di questo progetto, non sono soddisfatto del risultato (anche se è migliorato nel corso dei lavori).
Il nostro database e l'uso del ICD9 non sono adatti a cogliere certe problematiche cliniche.
D'altra parte come in ogni ricerca occorre trovare un compromesso tra "sensibilità" e "specificità". Aumentando il lasso di tempo aumenteranno i casi trovati ma anche i "falsi positivi".
Mantenendo la struttura della query puoi facilmente modificare il lasso di tempo variando il 365 che rappresenta l'anno di intervallo.
Se sei incerto allora devi indicarmi esattamente quanto vuoi andare indietro 730 giorni ?, 1095 giorni ? ecc. Inoltre può aver senso eventualmente variarlo per solo alcune patologia (es parkinson ha senso, frattura al femore forse meno), nel qual caso però occorrerebbe apportare anche alcune modifiche alla struttura della query.
Se vuoi darmi indicazioni nessun problema.
giampiero
Il nostro database e l'uso del ICD9 non sono adatti a cogliere certe problematiche cliniche.
D'altra parte come in ogni ricerca occorre trovare un compromesso tra "sensibilità" e "specificità". Aumentando il lasso di tempo aumenteranno i casi trovati ma anche i "falsi positivi".
Mantenendo la struttura della query puoi facilmente modificare il lasso di tempo variando il 365 che rappresenta l'anno di intervallo.
Se sei incerto allora devi indicarmi esattamente quanto vuoi andare indietro 730 giorni ?, 1095 giorni ? ecc. Inoltre può aver senso eventualmente variarlo per solo alcune patologia (es parkinson ha senso, frattura al femore forse meno), nel qual caso però occorrerebbe apportare anche alcune modifiche alla struttura della query.
Se vuoi darmi indicazioni nessun problema.
giampiero
GiampiMaz- Membro Junior
- Messaggi : 122
Punti : 5187
Voti per importanza dei messaggi : 33
Data d'iscrizione : 20.02.11
Re: Progetto Sperimentale sull'ADI
GiampiMaz ha scritto:Ciao, come scrivevo all'inizio di questo progetto, non sono soddisfatto del risultato (anche se è migliorato nel corso dei lavori).
Il nostro database e l'uso del ICD9 non sono adatti a cogliere certe problematiche cliniche.
D'altra parte come in ogni ricerca occorre trovare un compromesso tra "sensibilità" e "specificità". Aumentando il lasso di tempo aumenteranno i casi trovati ma anche i "falsi positivi".
Mantenendo la struttura della query puoi facilmente modificare il lasso di tempo variando il 365 che rappresenta l'anno di intervallo.
Se sei incerto allora devi indicarmi esattamente quanto vuoi andare indietro 730 giorni ?, 1095 giorni ? ecc. Inoltre può aver senso eventualmente variarlo per solo alcune patologia (es parkinson ha senso, frattura al femore forse meno), nel qual caso però occorrerebbe apportare anche alcune modifiche alla struttura della query.
Se vuoi darmi indicazioni nessun problema.
giampiero
Giampiero, obiettivamente mi rendo conto della difficoltà che si incontra operando su un database e sull'uso di ICD9 non adeguati alle differenti situazioni cliniche (ad esempio non riesco a trovare tra gli ICD9, la sindrome ipocinetica o sindrome da immobilizzazione, così come tante altre cose che devo aggiungere manualmente ma che poi non sono codificate nel programma).
Comunque al momento non rimane altro che estendere la ricerca andando indietro di 1095 giorni in modo da comprendere il maggior numero possibile di patologie. Magari potresti indicarmi come variare il lasso di tempo a 730 o a 1095 giorni.
Ciao.
aditroia- Membro Junior
- Messaggi : 191
Punti : 5285
Voti per importanza dei messaggi : 4
Data d'iscrizione : 24.02.11
Re: Progetto Sperimentale sull'ADI
E' piuttosto semplice:
il 365 rossi indica i giorni prima della data di riferimento '2010-12-31' e vengono selezionati i pazienti a cui è stata fatta diagnosi nel periodo (puoi quindi variarlo a 730 per fare due anni indietro o quello che vuoi 1460...)
il 365 arancione è per estrarre i problemi e quindi andrebbe messo uguale a quello rosso
i 365 verdi si riferiscono a ricoveri od esami nell'anno in esame (2010) e li lascierei uguali
i 365 marrone si riferiscono ai deceduti o revocati prima dell'anno in esame (2010) e li lascierei stare
prova
giampiero
SELECT distinct CAST ('2010-12-31' AS DATE) AS fine, p.cognome, p.nome, p.codice_fiscale, days(p.nascita, fine)/365 eta,
(select
list (distinct x.nome_pbl) from cart_pazpbl x where x.codice=p.codice
and ( x.cp_code like '431%' or x.cp_code like '436%' or x.cp_code like
'821%' or x.cp_code like '707%' or x.cp_code like '518.81' or
x.cp_code like '332.0' or x.cp_code like '15%' or x.cp_code like
'162%' or x.cp_code like '174%' or x.cp_code like '182%' or x.cp_code
like '201.9%' or x.cp_code like '193%' or x.cp_code like '799.4') and
x.data_open between (fine - 365) and fine ) as _problem_,
(select
count ( x.codice) from cart_accert x where x.codice=p.codice and
x.ac_tipo like 'RIC' and x.data_open between (fine - 365) and fine ) as
ricoveri,
(select list ( x.ac_des) from cart_accert x where
x.codice=p.codice and x.ac_tipo NOT IN
('AN','BS','ED','FAM','RSA','STI','TST','V','VIS','RIC') and
x.rowid_master IS NULL and x.data_open between (fine - 365) and fine )
as _esami_,
(select count ( x.codice) from cart_accert x where
x.codice=p.codice and x.ac_tipo NOT IN
('AN','BS','ED','FAM','RSA','STI','TST','V','VIS','RIC') and
x.rowid_master IS NULL and x.data_open between (fine - 365) and fine )
as num_es,
p.decesso, p.Pa_Cmorte as causa,
if p.decesso is not null then
(select
cast(p.decesso - max(x.data_open) as INT) from cart_pazpbl x where
x.codice=p.codice and ( x.cp_code like '431%' or x.cp_code like '436%'
or x.cp_code like '821%' or x.cp_code like '707%' or x.cp_code like
'518.81' or x.cp_code like '332.0' or x.cp_code like '15%' or
x.cp_code like '162%' or x.cp_code like '174%' or x.cp_code like
'182%' or x.cp_code like '201.9%' or x.cp_code like '193%' or
x.cp_code like '799.4') and x.data_open between (fine - 365) and fine )
endif as G_soprav_
FROM pazienti p, nos_002 n, cart_pazpbl pr
WHERE p.codice=n.codice AND p.codice=pr.codice
AND eta > 65
AND
(pr.cp_code like '431%' or pr.cp_code like '436%' or pr.cp_code like
'821%' or pr.cp_code like '707%' or pr.cp_code like '518.81' or
pr.cp_code like '332.0' or pr.cp_code like '15%' or pr.cp_code like
'162%' or pr.cp_code like '174%' or pr.cp_code like '182%' or
pr.cp_code like '201.9%' or pr.cp_code like '193%' or pr.cp_code like
'799.4')
AND pr.data_open between (fine - 365) and fine
AND
(n.pa_drevoca IS NULL or (n.pa_drevoca > (fine-365) and
p.decesso=n.pa_drevoca) ) AND (p.decesso IS NULL or p.decesso >
(fine-365) )
AND p.pa_convenzione='S'
AND n.pa_medi = 'XXXXXX'
Order by 2,3,4
il 365 rossi indica i giorni prima della data di riferimento '2010-12-31' e vengono selezionati i pazienti a cui è stata fatta diagnosi nel periodo (puoi quindi variarlo a 730 per fare due anni indietro o quello che vuoi 1460...)
il 365 arancione è per estrarre i problemi e quindi andrebbe messo uguale a quello rosso
i 365 verdi si riferiscono a ricoveri od esami nell'anno in esame (2010) e li lascierei uguali
i 365 marrone si riferiscono ai deceduti o revocati prima dell'anno in esame (2010) e li lascierei stare
prova
giampiero
SELECT distinct CAST ('2010-12-31' AS DATE) AS fine, p.cognome, p.nome, p.codice_fiscale, days(p.nascita, fine)/365 eta,
(select
list (distinct x.nome_pbl) from cart_pazpbl x where x.codice=p.codice
and ( x.cp_code like '431%' or x.cp_code like '436%' or x.cp_code like
'821%' or x.cp_code like '707%' or x.cp_code like '518.81' or
x.cp_code like '332.0' or x.cp_code like '15%' or x.cp_code like
'162%' or x.cp_code like '174%' or x.cp_code like '182%' or x.cp_code
like '201.9%' or x.cp_code like '193%' or x.cp_code like '799.4') and
x.data_open between (fine - 365) and fine ) as _problem_,
(select
count ( x.codice) from cart_accert x where x.codice=p.codice and
x.ac_tipo like 'RIC' and x.data_open between (fine - 365) and fine ) as
ricoveri,
(select list ( x.ac_des) from cart_accert x where
x.codice=p.codice and x.ac_tipo NOT IN
('AN','BS','ED','FAM','RSA','STI','TST','V','VIS','RIC') and
x.rowid_master IS NULL and x.data_open between (fine - 365) and fine )
as _esami_,
(select count ( x.codice) from cart_accert x where
x.codice=p.codice and x.ac_tipo NOT IN
('AN','BS','ED','FAM','RSA','STI','TST','V','VIS','RIC') and
x.rowid_master IS NULL and x.data_open between (fine - 365) and fine )
as num_es,
p.decesso, p.Pa_Cmorte as causa,
if p.decesso is not null then
(select
cast(p.decesso - max(x.data_open) as INT) from cart_pazpbl x where
x.codice=p.codice and ( x.cp_code like '431%' or x.cp_code like '436%'
or x.cp_code like '821%' or x.cp_code like '707%' or x.cp_code like
'518.81' or x.cp_code like '332.0' or x.cp_code like '15%' or
x.cp_code like '162%' or x.cp_code like '174%' or x.cp_code like
'182%' or x.cp_code like '201.9%' or x.cp_code like '193%' or
x.cp_code like '799.4') and x.data_open between (fine - 365) and fine )
endif as G_soprav_
FROM pazienti p, nos_002 n, cart_pazpbl pr
WHERE p.codice=n.codice AND p.codice=pr.codice
AND eta > 65
AND
(pr.cp_code like '431%' or pr.cp_code like '436%' or pr.cp_code like
'821%' or pr.cp_code like '707%' or pr.cp_code like '518.81' or
pr.cp_code like '332.0' or pr.cp_code like '15%' or pr.cp_code like
'162%' or pr.cp_code like '174%' or pr.cp_code like '182%' or
pr.cp_code like '201.9%' or pr.cp_code like '193%' or pr.cp_code like
'799.4')
AND pr.data_open between (fine - 365) and fine
AND
(n.pa_drevoca IS NULL or (n.pa_drevoca > (fine-365) and
p.decesso=n.pa_drevoca) ) AND (p.decesso IS NULL or p.decesso >
(fine-365) )
AND p.pa_convenzione='S'
AND n.pa_medi = 'XXXXXX'
Order by 2,3,4
GiampiMaz- Membro Junior
- Messaggi : 122
Punti : 5187
Voti per importanza dei messaggi : 33
Data d'iscrizione : 20.02.11
Re: Progetto Sperimentale sull'ADI
GiampiMaz ha scritto:E' piuttosto semplice:
il 365 rossi indica i giorni prima della data di riferimento '2010-12-31' e vengono selezionati i pazienti a cui è stata fatta diagnosi nel periodo (puoi quindi variarlo a 730 per fare due anni indietro o quello che vuoi 1460...)
il 365 arancione è per estrarre i problemi e quindi andrebbe messo uguale a quello rosso
i 365 verdi si riferiscono a ricoveri od esami nell'anno in esame (2010) e li lascierei uguali
i 365 marrone si riferiscono ai deceduti o revocati prima dell'anno in esame (2010) e li lascierei stare
prova
giampiero
SELECT distinct CAST ('2010-12-31' AS DATE) AS fine, p.cognome, p.nome, p.codice_fiscale, days(p.nascita, fine)/365 eta,
(select
list (distinct x.nome_pbl) from cart_pazpbl x where x.codice=p.codice
and ( x.cp_code like '431%' or x.cp_code like '436%' or x.cp_code like
'821%' or x.cp_code like '707%' or x.cp_code like '518.81' or
x.cp_code like '332.0' or x.cp_code like '15%' or x.cp_code like
'162%' or x.cp_code like '174%' or x.cp_code like '182%' or x.cp_code
like '201.9%' or x.cp_code like '193%' or x.cp_code like '799.4') and
x.data_open between (fine - 365) and fine ) as _problem_,
(select
count ( x.codice) from cart_accert x where x.codice=p.codice and
x.ac_tipo like 'RIC' and x.data_open between (fine - 365) and fine ) as
ricoveri,
(select list ( x.ac_des) from cart_accert x where
x.codice=p.codice and x.ac_tipo NOT IN
('AN','BS','ED','FAM','RSA','STI','TST','V','VIS','RIC') and
x.rowid_master IS NULL and x.data_open between (fine - 365) and fine )
as _esami_,
(select count ( x.codice) from cart_accert x where
x.codice=p.codice and x.ac_tipo NOT IN
('AN','BS','ED','FAM','RSA','STI','TST','V','VIS','RIC') and
x.rowid_master IS NULL and x.data_open between (fine - 365) and fine )
as num_es,
p.decesso, p.Pa_Cmorte as causa,
if p.decesso is not null then
(select
cast(p.decesso - max(x.data_open) as INT) from cart_pazpbl x where
x.codice=p.codice and ( x.cp_code like '431%' or x.cp_code like '436%'
or x.cp_code like '821%' or x.cp_code like '707%' or x.cp_code like
'518.81' or x.cp_code like '332.0' or x.cp_code like '15%' or
x.cp_code like '162%' or x.cp_code like '174%' or x.cp_code like
'182%' or x.cp_code like '201.9%' or x.cp_code like '193%' or
x.cp_code like '799.4') and x.data_open between (fine - 365) and fine )
endif as G_soprav_
FROM pazienti p, nos_002 n, cart_pazpbl pr
WHERE p.codice=n.codice AND p.codice=pr.codice
AND eta > 65
AND
(pr.cp_code like '431%' or pr.cp_code like '436%' or pr.cp_code like
'821%' or pr.cp_code like '707%' or pr.cp_code like '518.81' or
pr.cp_code like '332.0' or pr.cp_code like '15%' or pr.cp_code like
'162%' or pr.cp_code like '174%' or pr.cp_code like '182%' or
pr.cp_code like '201.9%' or pr.cp_code like '193%' or pr.cp_code like
'799.4')
AND pr.data_open between (fine - 365) and fine
AND
(n.pa_drevoca IS NULL or (n.pa_drevoca > (fine-365) and
p.decesso=n.pa_drevoca) ) AND (p.decesso IS NULL or p.decesso >
(fine-365) )
AND p.pa_convenzione='S'
AND n.pa_medi = 'XXXXXX'
Order by 2,3,4
Ok Giampiero, la query funziona bene. Abbiamo sicuramente ottenuto il miglior risultato possibile.
I complimenti sono obsoleti, ciao.
aditroia- Membro Junior
- Messaggi : 191
Punti : 5285
Voti per importanza dei messaggi : 4
Data d'iscrizione : 24.02.11
Pagina 2 di 2 • 1, 2
Argomenti simili
» Progetto Umbria.net
» Millewin - Unofficial utilities
» Estrazione progetto ASL
» help progetto dono
» suggerimenti x progetto informatico
» Millewin - Unofficial utilities
» Estrazione progetto ASL
» help progetto dono
» suggerimenti x progetto informatico
Pagina 2 di 2
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.