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
****************************************************

telemedicina per pz in adi

Andare in basso

telemedicina per pz in adi

Messaggio  Lucio Mignone il Ven 20 Apr 2012 - 13:45

Oggi mi hanno chiesto di fare una query di questo tipo...

Pz in ADI / ADP
Pz > 75 anni
Pz affetto da due o più delle seguenti
patologie:
protesi valvolari cardiache meccaniche
fibrillazione atriale
embolia polmonare
edema polnonare ( > 1 episodio nell’ultimo
anno)
trombosi cardiaca intracavitaria (??)
diabete mellito tipo I o II

Io ci provo, anche per esercizio, ma se ci fosse qualcuno che ha una query simile da cui partire mi sarebbe d'aiuto.
Servirebbe a identificare pz in adi a cui fornire qualche servizio di telemedicina.
avatar
Lucio Mignone
Membro Senior
Membro Senior

Messaggi : 626
Punti : 3466
Voti per importanza dei messaggi : 34
Data d'iscrizione : 20.02.11
Età : 54
Località : CAVRIGLIA (AR)

Visualizza il profilo dell'utente http://comeva.altervista.org/

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  GiampiMaz il Ven 20 Apr 2012 - 20:26

Ciao Lucio
i pazienti AI/ADP li inserisci in qualche registro?
embolia polmonare in atto o anche pregressa + di 1 anno?
edema polmonare (414%) può essere registrato anche come insufficienza cardiaca - scompenso cardiaco (428%) e non necessariamente segnati i singoli episodi per cui non so se sia possibile estrarre quelli con più di un episodio all'anno, almeno non con una query che sia valida per tutte le modalità di registrazione possibili.
trombosi cardiaca intracavitaria (??) potrebbe essere 429,79 TROMBO MURALE ACQUISITO, SUCCESSIVO INFARTO MIOCARDICO (devono fare il coumadin a lungo)
a parte il diabete, anche le altre patologie tutta gente che deve fare il coumadin
Prova a fare la query e se mi chiarisci questi punti poi ci ragioniamo.
giampiero
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo dell'utente

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Lucio Mignone il Ven 20 Apr 2012 - 21:35

GiampiMaz ha scritto:Ciao Lucio
i pazienti AI/ADP li inserisci in qualche registro?
embolia polmonare in atto o anche pregressa + di 1 anno?
edema polmonare (414%) può essere registrato anche come insufficienza cardiaca - scompenso cardiaco (428%) e non necessariamente segnati i singoli episodi per cui non so se sia possibile estrarre quelli con più di un episodio all'anno, almeno non con una query che sia valida per tutte le modalità di registrazione possibili.
trombosi cardiaca intracavitaria (??) potrebbe essere 429,79 TROMBO MURALE ACQUISITO, SUCCESSIVO INFARTO MIOCARDICO (devono fare il coumadin a lungo)
a parte il diabete, anche le altre patologie tutta gente che deve fare il coumadin
Prova a fare la query e se mi chiarisci questi punti poi ci ragioniamo.
giampiero

Allora Maestro,

La query è richiesta da altri colleghi per cui mi farò chiarire i dubbi al più presto.
Prima di scrivere la query avere ben chiaro cosa cercare e dove cercarlo.
Oggi quindi mi sono dedicato a studiare un poco il database ed i codici icd9

Io pernsavo di estrarre ADI ed ADP attive inserite nel registro ADI APD (cart_concessioni_pip incent_code 0000024 per ADI incent_code 0000023 per ADP)
Per quanto riguarda il resto io farei così,
Protesi valvolari cardiache codici icd9 v42.2 e v43.3
Embolia polmonare (stroia di embolia quindi anche pregresssa) codice icd9 415.1 415.11 415.19
Fibrilazione atriale (problema attivo) icd9 427.3 e 427.31
scompenso si intende edema polmonare almeno un episodio nell'ultimo anno comprenderei i codici icd9 514 428.1 429.4 428.9 428 518.4
diabete icd9 basterebbe 250 ma per non sbagliare ricercherei i codici che vanno da 250 a 250.9
trombosi cardiaca endocavitaria la tua idea mi piace e la sposo 429,79

Ho letto anche vecchie discussioni ma non ho ben chiara la differenza tra DBA_cart_problemi e DBA_cart_pazpbl e quindi dove è meglio cercare i problemi, altro dubbio ancora se utilizzare le viste.

Altro problema è come contare che il pz abbia ALMENO DUE delle patologie suddette, per ora non mi è venuta nessuna idea.

Comunque ora provo a scrivere qualcosa e vediamo il risultato.
Grazie per il tuo sostegno.
avatar
Lucio Mignone
Membro Senior
Membro Senior

Messaggi : 626
Punti : 3466
Voti per importanza dei messaggi : 34
Data d'iscrizione : 20.02.11
Età : 54
Località : CAVRIGLIA (AR)

Visualizza il profilo dell'utente http://comeva.altervista.org/

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Lucio Mignone il Sab 21 Apr 2012 - 1:30

Per ora sono riuscito a fare questo...


SELECT distinct p.cognome, p.nome, Years(p.nascita, TODAY()) As eta, p.sesso As _sesso_,

(select distinct 'si' from cart_pazpbl pr where
pr.codice=p.codice and (
pr.cp_code between '250.00' and '250.93'
) ) Diabete,

(select distinct 'si' from cart_pazpbl pr where
pr.codice=p.codice and (
pr.cp_code like '427.3' or
pr.cp_code like '427.31'
) ) Fibrillazione,

(select distinct 'si' from cart_pazpbl pr where
pr.codice=p.codice and (
pr.cp_code like '415.1' or
pr.cp_code like '415.11' or
pr.cp_code like '415.19'
) ) Embolia,

(select distinct 'si' from cart_pazpbl pr where
pr.codice=p.codice and (
pr.cp_code like 'V42.2' or
pr.cp_code like 'V43.3'
) ) Protesi_Valvolare,

(select distinct 'si' from cart_pazpbl pr where
pr.codice=p.codice and (
pr.cp_code like '514' or
pr.cp_code like '518.4' or
pr.cp_code like '420.0' or
pr.cp_code like '428' or
pr.cp_code like '428.0' or
pr.cp_code like '428.1' or
pr.cp_code like '428.9' or
pr.cp_code like '429.4'
)) Scompenso,

(select distinct 'si' from cart_concessioni_pip pip where
pip.codice=p.codice and (
pip.incent_code like '0000023'
and pip.data_fine_autorizz >= today() /* VERIFICA SE L'ADP E' ATTIVA */
) ) ADP,

(select distinct 'si' from cart_concessioni_pip pip where
pip.codice=p.codice and (
pip.incent_code like '0000024'
and pip.data_fine_autorizz >= today() /* VERIFICA SE L'ADI E' ATTIVA */
) ) ADI

FROM pazienti p, nos_002 n
WHERE p.codice =n.codice
AND eta >= 75
And p.pa_convenzione = 'S' And (n.pa_drevoca Is Null Or n.pa_drevoca > Today())
And p.decesso is null
And n.pa_medi = 'XGWVUA2'

order by 1,2

/* PROBLEMI IDENTIFICATI E DA RISOLVERE:

1- ELIMINARE ESTRAZIONE PAZIENTI SENZA EVENTI
e CONTARE GLI EVENTI, DEVONO ESSERE INCLUSI SOLO I PAZIENTI CON ALMENO DUE EVENTI (DUE 'SI')

2- LA DATA DELL'EVENTO SCOMPENSO CHE DEVE ESSERE NELL'ULTIMO ANNO - INSERENDO and pr.data_registr BETWEEN today() - 365 and today()) NON FUNZIONA



*/
avatar
Lucio Mignone
Membro Senior
Membro Senior

Messaggi : 626
Punti : 3466
Voti per importanza dei messaggi : 34
Data d'iscrizione : 20.02.11
Età : 54
Località : CAVRIGLIA (AR)

Visualizza il profilo dell'utente http://comeva.altervista.org/

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  GiampiMaz il Sab 21 Apr 2012 - 11:52

Ciao Luca
volendo giocare a Maestro ed Allievo, ti indico un modo (grezzo) per calcolare quante patologie sono segnate.
Va naturalmente completata (sei Tu l'Allievo). Mettendo Punteggio >=2 dovresti ottenere lo scopo.
Aggiungerei la clausola ADI ADP anche in where per limitare l'estrazione ai soli pazienti interessati.
In Protesi Valvolari toglierei pr.cp_code like 'V42.2' or (le autologhe) dato che hai specificato meccaniche.

Più complesso il problema dell'edema polmonare perchè dipende dalle abitudini del medico, se segna ogni episodio come nuovo problema (magari per poi chiuderlo) o lascia scompenso come problema e magari segna nel diario i singoli episodi ecc. Nel primo caso si potrebbe usare data_open , che però non sarebbe efficace nel secondo. Per tentare una estrazione occorrerebbe appunto sapere come viene registrato il dato.

Intanto proviamo con questa
(e speriamo che i Professori non bacchettino)
giampiero

------------------------
SELECT distinct p.cognome, p.nome, Years(p.nascita, TODAY()) As eta, p.sesso As _sesso_,

if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '250%') then 1 else 0 endif AS _diab_,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '427.3%') then 1 else 0 endif AS _FFA_,



(select distinct 'si' from cart_concessioni_pip pip where
pip.codice=p.codice and (
pip.incent_code like '0000023'
and pip.data_fine_autorizz >= today() /* VERIFICA SE L'ADP E' ATTIVA */
) ) ADP,

(select distinct 'si' from cart_concessioni_pip pip where
pip.codice=p.codice and (
pip.incent_code like '0000024'
and pip.data_fine_autorizz >= today() /* VERIFICA SE L'ADI E' ATTIVA */
) ) ADI,
(_diab_ + _ffa_ ) punteggio

FROM pazienti p, nos_002 n
WHERE p.codice =n.codice
AND eta >= 75
And p.pa_convenzione = 'S' And (n.pa_drevoca Is Null Or n.pa_drevoca > Today())
And p.decesso is null
And n.pa_medi = '%'

And (ADP like 'si' or ADI like 'si')
And punteggio > 0
order by 1,2
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo dell'utente

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Lucio Mignone il Sab 21 Apr 2012 - 12:35

GiampiMaz ha scritto:Ciao Luca
Lucio Maestro Lucio...



Va naturalmente completata (sei Tu l'Allievo). Mettendo Punteggio >=2 dovresti ottenere lo scopo.
Ok provo



Aggiungerei la clausola ADI ADP anche in where per limitare l'estrazione ai soli pazienti interessati.
Grazie per il suggerimento



In Protesi Valvolari toglierei pr.cp_code like 'V42.2' or (le autologhe) dato che hai specificato meccaniche.
Non mi ero accorto della svista...



Più complesso il problema dell'edema polmonare perchè dipende dalle abitudini del medico, se segna ogni episodio come nuovo problema (magari per poi chiuderlo)
Io propenderei per questa ipotesi, visto che generalmente viene suggerito di fare così.
Secondo me esiste anche una terza possibilità registrare scompenso cardiaco (insuff. cardiaca o simili...) come problema pincipale e poi inserire come complicanza ogni episodio di EDEMA POLMONARE... e questa la vedo difficile da ricercare...

io semplificherei la questione cercando ogni nuovo episodio come problema e poi verificare sul campo...

Provo a capire meglio la tua query (e per le mie conoscenze ci vorrà un pochino di tempo...) e poi ci risentiamo.
Molte Grazie
avatar
Lucio Mignone
Membro Senior
Membro Senior

Messaggi : 626
Punti : 3466
Voti per importanza dei messaggi : 34
Data d'iscrizione : 20.02.11
Età : 54
Località : CAVRIGLIA (AR)

Visualizza il profilo dell'utente http://comeva.altervista.org/

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Lucio Mignone il Sab 21 Apr 2012 - 13:03

GiampiMaz ha scritto:
.....

Intanto proviamo con questa
(e speriamo che i Professori non bacchettino)
giampiero

------------------------
SELECT distinct p.cognome, p.nome, Years(p.nascita, TODAY()) As eta, p.sesso As _sesso_,

if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '250%') then 1 else 0 endif AS _diab_,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '427.3%') then 1 else 0 endif AS _FFA_,



(select distinct 'si' from cart_concessioni_pip pip where
pip.codice=p.codice and (
pip.incent_code like '0000023'
and pip.data_fine_autorizz >= today() /* VERIFICA SE L'ADP E' ATTIVA */
) ) ADP,

(select distinct 'si' from cart_concessioni_pip pip where
pip.codice=p.codice and (
pip.incent_code like '0000024'
and pip.data_fine_autorizz >= today() /* VERIFICA SE L'ADI E' ATTIVA */
) ) ADI,
(_diab_ + _ffa_ ) punteggio

FROM pazienti p, nos_002 n
WHERE p.codice =n.codice
AND eta >= 75
And p.pa_convenzione = 'S' And (n.pa_drevoca Is Null Or n.pa_drevoca > Today())
And p.decesso is null
And n.pa_medi = '%'

And (ADP like 'si' or ADI like 'si')
And punteggio > 0
order by 1,2

La tua query, anche inserendo il mio codice med gruppo, estrae 0 pazienti.
Provo a capire dov'è il problema...
avatar
Lucio Mignone
Membro Senior
Membro Senior

Messaggi : 626
Punti : 3466
Voti per importanza dei messaggi : 34
Data d'iscrizione : 20.02.11
Età : 54
Località : CAVRIGLIA (AR)

Visualizza il profilo dell'utente http://comeva.altervista.org/

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  GiampiMaz il Sab 21 Apr 2012 - 13:20

Caro LUCIO Laughing
prova a sostituire con

And n.pa_medi like '%' (ma se hai messo il codice avrebbe dovuto funzionare anche prima)

o togli AND punteggio >0 (nel caso non abbia nessuno con diabete o ffa) o metti >= 0
poi vediamo
gp
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo dell'utente

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Lucio Mignone il Sab 21 Apr 2012 - 14:28

GiampiMaz ha scritto:Caro LUCIO Laughing
prova a sostituire con

And n.pa_medi like '%' (ma se hai messo il codice avrebbe dovuto funzionare anche prima)

o togli AND punteggio >0 (nel caso non abbia nessuno con diabete o ffa) o metti >= 0
poi vediamo
gp


...la seconda che hai detto!
avatar
Lucio Mignone
Membro Senior
Membro Senior

Messaggi : 626
Punti : 3466
Voti per importanza dei messaggi : 34
Data d'iscrizione : 20.02.11
Età : 54
Località : CAVRIGLIA (AR)

Visualizza il profilo dell'utente http://comeva.altervista.org/

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Admin il Dom 22 Apr 2012 - 0:20

Dovrebbe funzionare la seguente:

SELECT distinct p.cognome+' '+p.nome AS Nome, Years(p.nascita, TODAY()) As eta, ' '_, p.sesso As _sesso_,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '250%') then 1 else 0 endif AS _diabete_,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '427.3%') then 1 else 0 endif AS _Fibrillazione_Atriale_,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('415.1' ,'415.11' , '415.19')) THEN 1 ELSE 0 ENDIF AS _Embolia_,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('V43.3')) THEN 1 ELSE 0 ENDIF AS Protesi_Valvolare,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('514' ,'518.4' ,'420.0' ,'428' , '428.0' , '428.1' , '428.9' , '429.4') AND y.data_open >= (Today() -365)) THEN 1 ELSE 0 endif AS Scompenso, ' '_,
IF p.codice IN (select y.codice from cart_concessioni_pip y where y.incent_code LIKE '0000023' and y.data_fine_autorizz >= today()) THEN 'si' ELSE 'no' ENDIF AS ADP,
IF p.codice IN (select y.codice from cart_concessioni_pip y where y.incent_code like '0000024' and y.data_fine_autorizz >= today()) THEN 'si' ELSE 'no' ENDIF AS ADI,
(_diabete_ + _Fibrillazione_Atriale_ +_Embolia_+Protesi_valvolare+Scompenso) N_Eventi
FROM pazienti p, nos_002 n
WHERE p.codice =n.codice
AND eta >= 75
And p.pa_convenzione = 'S'
And (n.pa_drevoca Is Null Or n.pa_drevoca > Today()) And p.decesso is null
And n.pa_medi like '%'
And (ADP like 'si' or ADI like 'si')
AND N_Eventi >= 2
order by 1,2


Per l'espressione "and pr.data_registr BETWEEN today() - 365 and today()" è preferibile che i 2 termini di paragone siano chiusi tra parentesi "and pr.data_registr BETWEEN (today() - 365) and today()", inoltre data_registr credo indichi la data di inserimento del problema per cui spesso non corrisponde con data_open che invece rappresenta la data di inizio del problema. In ogn caso credo che sia più pulita l'espressione "data_open > (Today() -365)"

_________________
L'Amministratore
Giuseppe Blasio
avatar
Admin
Admin
Admin

Messaggi : 521
Punti : 3326
Voti per importanza dei messaggi : 85
Data d'iscrizione : 20.02.11
Località : CASERTA

Visualizza il profilo dell'utente http://utentimillewin.forumattivo.it

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Lucio Mignone il Dom 22 Apr 2012 - 11:20

Admin ha scritto:Dovrebbe funzionare la seguente:

SELECT distinct p.cognome+' '+p.nome AS Nome, Years(p.nascita, TODAY()) As eta, ' '_, p.sesso As _sesso_,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '250%') then 1 else 0 endif AS _diabete_,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '427.3%') then 1 else 0 endif AS _Fibrillazione_Atriale_,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('415.1' ,'415.11' , '415.19')) THEN 1 ELSE 0 ENDIF AS _Embolia_,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('V43.3')) THEN 1 ELSE 0 ENDIF AS Protesi_Valvolare,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('514' ,'518.4' ,'420.0' ,'428' , '428.0' , '428.1' , '428.9' , '429.4') AND y.data_open >= (Today() -365)) THEN 1 ELSE 0 endif AS Scompenso, ' '_,
IF p.codice IN (select y.codice from cart_concessioni_pip y where y.incent_code LIKE '0000023' and y.data_fine_autorizz >= today()) THEN 'si' ELSE 'no' ENDIF AS ADP,
IF p.codice IN (select y.codice from cart_concessioni_pip y where y.incent_code like '0000024' and y.data_fine_autorizz >= today()) THEN 'si' ELSE 'no' ENDIF AS ADI,
(_diabete_ + _Fibrillazione_Atriale_ +_Embolia_+Protesi_valvolare+Scompenso) N_Eventi
FROM pazienti p, nos_002 n
WHERE p.codice =n.codice
AND eta >= 75
And p.pa_convenzione = 'S'
And (n.pa_drevoca Is Null Or n.pa_drevoca > Today()) And p.decesso is null
And n.pa_medi like '%'
And (ADP like 'si' or ADI like 'si')
AND N_Eventi >= 2
order by 1,2


Per l'espressione "and pr.data_registr BETWEEN today() - 365 and today()" è preferibile che i 2 termini di paragone siano chiusi tra parentesi "and pr.data_registr BETWEEN (today() - 365) and today()", inoltre data_registr credo indichi la data di inserimento del problema per cui spesso non corrisponde con data_open che invece rappresenta la data di inizio del problema. In ogn caso credo che sia più pulita l'espressione "data_open > (Today() -365)"

Grazie Giuseppe, sempre disponibile.
Come anche Giampiero
e tutti gli amici del forum.

Dovremmo organizzare un Meeting degli utenti del forum prima o poi...

Sto imparando molto da voi, anche se spesso ancora brancolo nel buio.
Mi aiuto molto con questo tutorial
http://sql.1keydata.com/it/
Appena ho tempo compro qualche guida su libro, un libro non tradisce mai... Se avete suggerimenti !?

Avevo dubbi sulla differenza tra data_registr e data_open ma ora ho capito!
Proverò la query devo fare qualche minima modifica dell'ultimora e Vi faccio sapere gli sviluppi.
avatar
Lucio Mignone
Membro Senior
Membro Senior

Messaggi : 626
Punti : 3466
Voti per importanza dei messaggi : 34
Data d'iscrizione : 20.02.11
Età : 54
Località : CAVRIGLIA (AR)

Visualizza il profilo dell'utente http://comeva.altervista.org/

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Lucio Mignone il Dom 22 Apr 2012 - 11:26

IF p.codice IN (select y.codice from
cart_concessioni_pip y where y.incent_code LIKE '0000023' and
y.data_fine_autorizz >= today()) THEN 'si' ELSE 'no' ENDIF AS ADP,

Così leggendo la query 'a caldo' la prima impressione è che l'espressione in rosso
ELSE 'no' ENDIF sia superflua visto che dopo where abbiamo deciso di escludere quei pz che non hanno attiva ADI o ADP.
Torna utile, invece, se, modificando la query, volgiamo estrarre tutti e vedere chi ha l'ADI/ADP attiva e chi no.

avatar
Lucio Mignone
Membro Senior
Membro Senior

Messaggi : 626
Punti : 3466
Voti per importanza dei messaggi : 34
Data d'iscrizione : 20.02.11
Età : 54
Località : CAVRIGLIA (AR)

Visualizza il profilo dell'utente http://comeva.altervista.org/

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Admin il Dom 22 Apr 2012 - 12:14

Lucio Mignone ha scritto:IF p.codice IN (select y.codice from
cart_concessioni_pip y where y.incent_code LIKE '0000023' and
y.data_fine_autorizz >= today()) THEN 'si' ELSE 'no' ENDIF AS ADP,

Così leggendo la query 'a caldo' la prima impressione è che l'espressione in rosso
ELSE 'no' ENDIF sia superflua visto che dopo where abbiamo deciso di escludere quei pz che non hanno attiva ADI o ADP.
Torna utile, invece, se, modificando la query, volgiamo estrarre tutti e vedere chi ha l'ADI/ADP attiva e chi no.


L'espressione serve proprio a questo perché ADI ed ADP non sono certamente coesistenti per cui o è attiva l'una o l'altra.

Qualora si volessero includere tutti i pazienti rispondenti ai requisiti indipendentemente da ADI ed ADP, basta eliminare la clausola: And (ADP like 'si' or ADI like 'si')

_________________
L'Amministratore
Giuseppe Blasio
avatar
Admin
Admin
Admin

Messaggi : 521
Punti : 3326
Voti per importanza dei messaggi : 85
Data d'iscrizione : 20.02.11
Località : CASERTA

Visualizza il profilo dell'utente http://utentimillewin.forumattivo.it

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  GiampiMaz il Dom 22 Apr 2012 - 19:40

Cari Lucio e Giuseppe
di seguito la query come la vedo io.
Avete dimenticati i poveretti col trombo intracavitario, che aggiungo.

Tra le condizioni iniziali chieste da Lucio c'erano quelli con più di uno scompenso nel giro di un anno. La semplice rilevazione del problema scompenso posta nell'anno non è quindi totalmente corretta. Tuttavia, come evidenziavo, molto dipende dalle abitudini di registrazione del medico. Molto interessante il suggerimento di Lucio di aggiungere ogni eventuali episodio di scompenso come complicanza di un problema scompenso che magari è aperto da anni. Molto elegante e visivamente efficace. Non ho l'abitudine di utilizzare questa funzionalità, e faccio male (ma per noi vecchi Mad medici è difficile cambiare abitudini), è utile e razionale. Non vi sono difficoltà nell'estrarre problemi inseriti in questo modo: vengono registrati normalmente in CART_PAZPBL solo si aggiunge un numero nel campo pb_link (uguale per tutti i problemi lincati) come millewin fa per i cluster.
Ho quindi modificato il select per contare quante volte inserito il problema scompenso (e simili) in un anno e porre il flag a 1 se il risultato è >1 (come richiesto). Se le abitudini di registrazione dei colleghi sono diverse allora si può tornare alla formulazione normale o porre a >0.

ATTENZIONE ho posto a 0 la condizione sul numero di problemi per testare la query, altrimenti a me ad esempio darebbe 0 pazienti. Andrà portata a 2 se soddisfatti.
giampiero


SELECT distinct p.cognome+' '+p.nome AS Nome, Years(p.nascita, TODAY()) As eta, ' '_, p.sesso As _sesso_,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '250%') then 1 else 0 endif AS _diabete_,
if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '427.3%') then 1 else 0 endif AS _Fibrillazione_Atriale_,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('415.1' ,'415.11' , '415.19')) THEN 1 ELSE 0 ENDIF AS _Embolia_,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like 'V43.3%') THEN 1 ELSE 0 ENDIF AS Protesi_Valvolare,
IF (select count (y.codice) from cart_pazpbl y where y.codice=p.codice and y.cp_code IN ('514' ,'518.4' ,'420.0' ,'428' , '428.0' , '428.1' , '428.9' , '429.4') AND y.data_open >= (Today() -365)) >1 then 1 else 0 endif scompenso ,
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '429.79%') THEN 1 ELSE 0 endif AS Trombo,
' '_,
IF p.codice IN (select y.codice from cart_concessioni_pip y where y.incent_code LIKE '0000023' and y.data_fine_autorizz >= today()) THEN 'si' ELSE 'no' ENDIF AS ADP,
IF p.codice IN (select y.codice from cart_concessioni_pip y where y.incent_code like '0000024' and y.data_fine_autorizz >= today()) THEN 'si' ELSE 'no' ENDIF AS ADI,
(_diabete_ + _Fibrillazione_Atriale_ +_Embolia_+Protesi_valvolare+Scompenso+Trombo) N_Eventi
FROM pazienti p, nos_002 n
WHERE p.codice =n.codice
AND eta >= 75
And p.pa_convenzione = 'S'
And (n.pa_drevoca Is Null Or n.pa_drevoca > Today()) And p.decesso is null
And n.pa_medi like '%'
And (ADP like 'si' or ADI like 'si')
AND N_Eventi >= 0
order by 1,2
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo dell'utente

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Lucio Mignone il Dom 22 Apr 2012 - 22:36

GiampiMaz ha scritto:Cari Lucio e Giuseppe
di seguito la query come la vedo io.
Avete dimenticati i poveretti col trombo intracavitario, che aggiungo.
L'avevo notato.
Tanto come richiesta dell'ultimora devo anche aggiugere i pz con diagnosi di BPCO, lo faccio appena ho un momento tranquillo.


... Molto interessante il suggerimento di Lucio di aggiungere ogni eventuali episodio di scompenso come complicanza di un problema scompenso che magari è aperto da anni. Molto elegante e visivamente efficace.
La utilizzo da alcuni mesi. Aprire un problema principale e poi inserire le recidive come complicanza (anche per patologie come la lombalgia es. DISCOPATIA LOMBARE > LOMBALGIA) ti consente di vedere subito il numero degli episodi. Molto più pratico che aprire ogni volta un nuovo problema e poi chiuderlo e disperderlo tra mille problemi chiusi.


Non vi sono difficoltà nell'estrarre problemi inseriti in questo modo: vengono registrati normalmente in CART_PAZPBL solo si aggiunge un numero nel campo pb_link (uguale per tutti i problemi lincati) come millewin fa per i cluster.
Quindi, se ho capito bene leggendo il tuo post e gurdando al query, si possono ricercare normalmente le complicanze, senza tenere conto del campo pb_link.


IF (select count (y.codice) from cart_pazpbl y where y.codice=p.codice and y.cp_code IN ('514' ,'518.4' ,'420.0' ,'428' , '428.0' , '428.1' , '428.9' , '429.4') AND y.data_open >= (Today() -365)) >1 then 1 else 0 endif scompenso ,
Qui ci portiamo dietro un mio refuso il codice icd9 420.0 va eliminato perchè è un mio errore di trascrizione.


Ora vi saluto, sono stanco, è un da alcune settimane che non sono in perfetta forma.
Domattina mi sveglio presto per fare qualche accertamento. Curiamo gli altri e spesso trascuriamo noi stessi!
A domani.
avatar
Lucio Mignone
Membro Senior
Membro Senior

Messaggi : 626
Punti : 3466
Voti per importanza dei messaggi : 34
Data d'iscrizione : 20.02.11
Età : 54
Località : CAVRIGLIA (AR)

Visualizza il profilo dell'utente http://comeva.altervista.org/

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  GiampiMaz il Lun 23 Apr 2012 - 7:56

Auguri, Lucio Auguri
Con affetto
giampiero
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo dell'utente

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Lucio Mignone il Lun 23 Apr 2012 - 12:50

GiampiMaz ha scritto:Auguri, Lucio Auguri
Con affetto
giampiero

Grazie Giampiero per il sostegno!
Vi rendero' edotti degli esiti.

Ho provato la query, ho fatto qualche minima modifica e mi pare che ci siamo.
Ho tentato di ordinare i dati in base la numero di eventi con Order By ma non ci sono riuscito.
Non ho ben chiara la differenza, inoltre, tra ORDER BY e GROUP BY.
Se puoi illuminarmi...?
avatar
Lucio Mignone
Membro Senior
Membro Senior

Messaggi : 626
Punti : 3466
Voti per importanza dei messaggi : 34
Data d'iscrizione : 20.02.11
Età : 54
Località : CAVRIGLIA (AR)

Visualizza il profilo dell'utente http://comeva.altervista.org/

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  GiampiMaz il Lun 23 Apr 2012 - 21:38

Caro Lucio
penso tu possa trovare migliori descrizioni in un qualsiasi corso o file di sql.
Comunque l'istruzione per ordinare i risultati è ORDER BY
in teoria si possono usare i nomi dei campi ma è fonte di complicazioni.
ORDER BY N_Eventi, p.cognome, p.nome, eta

al posto dei nomi dei campi molto meglio mettere i numeri es
ORDER 14, 1, 2, 3 (se non hai modificato il numero dei campi, se ne hai aggiunti o tolti devi contare per arrivare ad N_Eventi.

così per default conta dal più piccolo al più grande (dall'1 al 100 o dall'a alla z) e si può trascurare il comando ASC (ascendente); se si vuole ordinare al contrario (dal più grande al più piccolo) bisogna aggiungere DESC (discendente)

ORDER BY 14 DESC, 1, 2, 3 (1,2,3 non avendo messo nulla restano ascendenti)


GROUP BY è un'istruzione concettualmente più complessa, serve a raggruppare i campi voluti, ad esempio per contarli.

L'esempio riportato dal Manuale SQL di millewin è

SELECT terapia, SUM(quantita) quanti, SUM (prezzo*quantita) spesa
FROM v_terapie
WHERE fascia = 'A'
GROUP BY terapia
ORDER BY terapia --------- (qui si può mettere 1 : vedi sopra)

cioè raggruppiamo tutti i vari record terapia della vista V_terapie (tutti i quinazil, tutti i torvast ecc) poi sommiamo il numero di pezzi ecc
In pratica se è richiesto GROUP BY viene chiesto perentoriamente dal programma Sad

Ancora Auguri
giampiero
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo dell'utente

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Lucio Mignone il Mar 24 Apr 2012 - 23:29

GiampiMaz ha scritto:Caro Lucio
penso tu possa trovare migliori descrizioni in un qualsiasi corso o file di sql.
Comunque l'istruzione per ordinare i risultati è ORDER BY
in teoria si possono usare i nomi dei campi ma è fonte di complicazioni.
ORDER BY N_Eventi, p.cognome, p.nome, eta

al posto dei nomi dei campi molto meglio mettere i numeri es
ORDER 14, 1, 2, 3 (se non hai modificato il numero dei campi, se ne hai aggiunti o tolti devi contare per arrivare ad N_Eventi.

Ed avevo proprio fatto così come dici (Letto il manuale on line SQL, provato con i numeri e con i nomi dei campi) ma non riuscendo ad ottere un ordinamento corretto in base al numero di eventi pensavo mi fosse sfuggito qualcosa in merito ad Order By...
Riguardo il tutto (devo apportare ancora alcune modifiche Last Minutes) e ti faccio sapere.
avatar
Lucio Mignone
Membro Senior
Membro Senior

Messaggi : 626
Punti : 3466
Voti per importanza dei messaggi : 34
Data d'iscrizione : 20.02.11
Età : 54
Località : CAVRIGLIA (AR)

Visualizza il profilo dell'utente http://comeva.altervista.org/

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Lucio Mignone il Gio 3 Mag 2012 - 10:01

Questa è la versione definitiva della query con qualche modifica, come da richiesta della ASL (inserimento codice fiscale pz, codice regionale medico, evento ICTUS, qualche colonna vuota per inserire dati successivamente, etc.).
La pubblico se può essere utile ad altri e ringrazio moltissimo chi mi ha aiutato.



[COMMENTO]
ESTRAZIONE PZ CCM CON PIU' DI DUE PATOLOGIE A CUI DESTINARE SERVIZI TELEMEDICINA
[SQL]

SELECT distinct p.cognome+' '+p.nome AS Nome, p.codice_fiscale As Codice_Fiscale, p.nascita as Data_Nascita, Years(p.nascita, TODAY()) As Eta, p.sesso As _Sesso_, u.codice_regionale as Cod_Reg_Medico,

/* COLONNA VUOTA PER INSERIMENTO PUNTEGGIO EARLI */
' '_EARLI_,

if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '250%') then 1 else 0 endif AS _Diabete_I_e_II,

if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '496') then 1 else 0 endif AS _BPCO_,

IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('799.1' ,'518.81')) THEN 1 ELSE 0 ENDIF AS _Insufficienza_Respiratoria_Cronica_,

IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('415.1' ,'415.11' , '415.19')) THEN 1 ELSE 0 ENDIF AS _Embolia_,

if p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '427.3%') then 1 else 0 endif AS _Fibrillazione_Atriale_,

IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like 'V43.3%') THEN 1 ELSE 0 ENDIF AS Protesi_Valvolare_Meccanica,

/* ESTRAE PROBLEMA SCOMPENSO E CODICI SIMILI APERTO DA QUALSIASI DATA */
IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('514' , '518.4' , '428' , '428.0' , '428.1' , '428.9' , '429.4')) THEN 1 ELSE 0 ENDIF AS Scompenso ,

/*ESTRAE PROBLEMA SCOMPENSO SE PIU DI UN EPISODIO NELL ULTIMO ANNO*/
/* IF (select count (y.codice) from cart_pazpbl y where y.codice=p.codice and y.cp_code IN ('514' , '518.4' , '428' , '428.0' , '428.1' , '428.9' , '429.4') AND y.data_open >= (Today() -365)) >1 then 1 else 0 endif AS Scompenso , */

IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code like '429.79%') THEN 1 ELSE 0 endif AS Trombosi_Edocavitaria,

IF p.codice IN (select y.codice from cart_pazpbl y where y.cp_code IN ('436' , '431')) THEN 1 ELSE 0 ENDIF AS _Ictus_,

/* INSERISCE SI SE ADP ATTIVA ALTRIMENTI LASCIA VUOTA LA CASELLA */
IF p.codice IN (select y.codice from cart_concessioni_pip y where y.incent_code LIKE '0000023' and y.data_fine_autorizz >= today()) THEN 'si' ELSE ' ' ENDIF AS ADP,

/* INSERISCE SI SE ADI ATTIVA ALTRIMENTI LASCIA VUOTA LA CASELLA */
IF p.codice IN (select y.codice from cart_concessioni_pip y where y.incent_code like '0000024' and y.data_fine_autorizz >= today()) THEN 'si' ELSE ' ' ENDIF AS ADI,

/* COLONNA VUOTA PER ISERIMENTO PAZIENTE RESIDENTE RSA */
' '_RSA_,

(_diabete_I_e_II + _BPCO_ + _Insufficienza_Respiratoria_Cronica_ + _Embolia_+ _Fibrillazione_Atriale_ + Protesi_Valvolare_Meccanica + Scompenso + Trombosi_Edocavitaria + _Ictus_) As N_Eventi

FROM pazienti p, nos_002 n, v_utenti u,
WHERE p.codice =n.codice AND u.userid = n.pa_medi

AND eta >= 65
And p.pa_convenzione = 'S'
And (n.pa_drevoca Is Null Or n.pa_drevoca > Today()) And p.decesso is null

/* ATTENZIONE - Per estrarre i dati di un SINGOLO MEDICO inserire fra le parentesi il proprio codice di medicina di gruppo al posto delle XXXXX*/
/* Per estrarre i dati di TUTTI I MEDICI presenti nel database eliminare tutta la riga seguente */
And n.pa_medi like 'XXXXX'

AND N_Eventi >=2

Order by 1, 2, 3

/* PER ORDINARE ELENCO IN BASE AL NUMERO DI EVENTI */
/* Order by 20 desc, 1, 2, 3 */
avatar
Lucio Mignone
Membro Senior
Membro Senior

Messaggi : 626
Punti : 3466
Voti per importanza dei messaggi : 34
Data d'iscrizione : 20.02.11
Età : 54
Località : CAVRIGLIA (AR)

Visualizza il profilo dell'utente http://comeva.altervista.org/

Torna in alto Andare in basso

Re: telemedicina per pz in adi

Messaggio  Contenuto sponsorizzato


Contenuto sponsorizzato


Torna in alto Andare in basso

Torna in alto


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