FORUM PER UTENTI MILLEWIN
Attenzione !
Per intervenire sul forum è necessario essere registrati e connessi.

L'Amministratore

****************************************************
“Se tu hai una mela ed io ho una mela, e ce la scambiamo, alla fine tu ed io avremo sempre una mela ciascuno.
Ma se tu hai un’idea ed io ho un’idea, e ce la scambiamo, allora avremo entrambi due idee”.

George Bernard Shaw
****************************************************

Progetto Sperimentale sull'ADI

Pagina 2 di 2 Precedente  1, 2

Andare in basso

Re: Progetto Sperimentale sull'ADI

Messaggio  aditroia il Mar 7 Giu 2011 - 12:45

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
aditroia
Membro Junior
Membro Junior

Messaggi : 191
Punti : 3217
Voti per importanza dei messaggi : 4
Data d'iscrizione : 24.02.11

Visualizza il profilo

Torna in alto Andare in basso

Re: Progetto Sperimentale sull'ADI

Messaggio  GiampiMaz il Mar 7 Giu 2011 - 13:26

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
GiampiMaz
GiampiMaz
Membro Junior
Membro Junior

Messaggi : 122
Punti : 3119
Voti per importanza dei messaggi : 33
Data d'iscrizione : 20.02.11

Visualizza il profilo

Torna in alto Andare in basso

Re: Progetto Sperimentale sull'ADI

Messaggio  aditroia il Mar 7 Giu 2011 - 18:37

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
aditroia
Membro Junior
Membro Junior

Messaggi : 191
Punti : 3217
Voti per importanza dei messaggi : 4
Data d'iscrizione : 24.02.11

Visualizza il profilo

Torna in alto Andare in basso

Re: Progetto Sperimentale sull'ADI

Messaggio  GiampiMaz il Mar 7 Giu 2011 - 19:12

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
GiampiMaz
GiampiMaz
Membro Junior
Membro Junior

Messaggi : 122
Punti : 3119
Voti per importanza dei messaggi : 33
Data d'iscrizione : 20.02.11

Visualizza il profilo

Torna in alto Andare in basso

Re: Progetto Sperimentale sull'ADI

Messaggio  aditroia il Mar 7 Giu 2011 - 21:36

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
aditroia
Membro Junior
Membro Junior

Messaggi : 191
Punti : 3217
Voti per importanza dei messaggi : 4
Data d'iscrizione : 24.02.11

Visualizza il profilo

Torna in alto Andare in basso

Re: Progetto Sperimentale sull'ADI

Messaggio  Contenuto sponsorizzato


Contenuto sponsorizzato


Torna in alto Andare in basso

Pagina 2 di 2 Precedente  1, 2

Torna in alto


 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum