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

lombalgia ricerca

Andare in basso

lombalgia ricerca

Messaggio  mario shirt il Mer 14 Mag 2014 - 14:38

dato che si sta facendo un Audit sul mal di schiena,
avevo pensato di fare una estrazione su tutti i pazienti affetti da MdS (lombalgie e lombosciatalgie ), ma che che tenga conto anche di sesso, classi di età e consumo di farmaci (corticosteroidi, paracetamolo, paracetamolo+oppioidi e FANS).

C'e' qualcosa di gia' fatto o qualcuno che mi puo' aiutare?

Grazie

Mario
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 246
Punti : 3088
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 63

Visualizza il profilo

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  mario shirt il Ven 16 Mag 2014 - 7:34

mario shirt ha scritto:dato che si sta facendo un Audit sul mal di schiena,
avevo pensato di fare una estrazione su tutti i pazienti affetti da MdS (lombalgie e lombosciatalgie ), ma che che tenga conto anche di sesso, classi di età e consumo di farmaci (corticosteroidi, paracetamolo, paracetamolo+oppioidi e FANS).

C'e' qualcosa di gia' fatto o qualcuno che mi puo' aiutare?

Grazie

Mario

Scusate nessuno puo' darmi una traccia??

Grazie

Mario
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 246
Punti : 3088
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 63

Visualizza il profilo

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  Admin il Ven 16 Mag 2014 - 21:09

Come base si può partire da questa:

Select distinct cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 0 and 110         /* <<Selezionare la fascia di eta */
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */
ORDER BY 1,2,3

_________________
L'Amministratore
Giuseppe Blasio
avatar
Admin
Admin
Admin

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

Visualizza il profilo http://utentimillewin.forumattivo.it

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  mario shirt il Ven 16 Mag 2014 - 23:26

Admin ha scritto:Come base si può partire da questa:

Select distinct cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia  /*<< permette di variare ilperiodo della terapia da esaminare */
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 0 and 110         /* <<Selezionare la fascia di eta */
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */
ORDER BY 1,2,3

Grazie mille Admin , sempre gentilissimo. 

Dimmi se ho capito bene , leggi cosa ho scritto in rosso.
Mi puoi dire come fare a estrarre Tutta e Solo la terapia legata al problema lombalgia e lombosciatalgia (magari con data)

Ho provato a selezionare le classi di eta' scrivendo:
AND ___eta___ between 0 and 50         /* <<Selezionare la fascia di eta */
AND ___eta___ between 51 and 70         /* <<Selezionare la fascia di eta */
AND ___eta___ between 71 and 110         /* <<Selezionare la fascia di eta */

Mi da risultato 0

Cosa significa:
AND pb_status = 'A'

Se hai tempo x "illuminarmi" infinitamente grato e debitore. cheers 

Mario
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 246
Punti : 3088
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 63

Visualizza il profilo

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  Lucio Mignone il Sab 17 Mag 2014 - 10:42

mario shirt ha scritto:
Admin ha scritto:Come base si può partire da questa:

Select distinct cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia  /*<< permette di variare ilperiodo della terapia da esaminare */
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 0 and 110         /* <<Selezionare la fascia di eta */
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */
ORDER BY 1,2,3

Grazie mille Admin , sempre gentilissimo. 

Dimmi se ho capito bene , leggi cosa ho scritto in rosso.
Mi puoi dire come fare a estrarre Tutta e Solo la terapia legata al problema lombalgia e lombosciatalgia (magari con data)

Ho provato a selezionare le classi di eta' scrivendo:
AND ___eta___ between 0 and 50         /* <<Selezionare la fascia di eta */
AND ___eta___ between 51 and 70         /* <<Selezionare la fascia di eta */
AND ___eta___ between 71 and 110         /* <<Selezionare la fascia di eta */

Mi da risultato 0

Cosa significa:
AND pb_status = 'A'

Se hai tempo x "illuminarmi" infinitamente grato e debitore. cheers 

Mario
AND ___eta___ between 0 and 50         /* <<Selezionare la fascia di eta */
AND ___eta___ between 51 and 70         /* <<Selezionare la fascia di eta */
AND ___eta___ between 71 and 110         /* <<Selezionare la fascia di eta */


Mi da risultato 0


Devi mettere le classi di età una per volta, ovviamente… 

AND pb_status = 'A' 
vuol dire che il problema è attivo
avatar
Lucio Mignone
Membro Senior
Membro Senior

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

Visualizza il profilo http://comeva.altervista.org/

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  mario shirt il Dom 18 Mag 2014 - 15:05

Lucio Mignone ha scritto:
mario shirt ha scritto:
Admin ha scritto:Come base si può partire da questa:

Select distinct cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia  /*<< permette di variare ilperiodo della terapia da esaminare */
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 0 and 110         /* <<Selezionare la fascia di eta */
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */
ORDER BY 1,2,3

Grazie mille Admin , sempre gentilissimo. 

Dimmi se ho capito bene , leggi cosa ho scritto in rosso.
Mi puoi dire come fare a estrarre Tutta e Solo la terapia legata al problema lombalgia e lombosciatalgia (magari con data)

Ho provato a selezionare le classi di eta' scrivendo:
AND ___eta___ between 0 and 50         /* <<Selezionare la fascia di eta */
AND ___eta___ between 51 and 70         /* <<Selezionare la fascia di eta */
AND ___eta___ between 71 and 110         /* <<Selezionare la fascia di eta */

Mi da risultato 0

Cosa significa:
AND pb_status = 'A'

Se hai tempo x "illuminarmi" infinitamente grato e debitore. cheers 

Mario
AND ___eta___ between 0 and 50         /* <<Selezionare la fascia di eta */
AND ___eta___ between 51 and 70         /* <<Selezionare la fascia di eta */
AND ___eta___ between 71 and 110         /* <<Selezionare la fascia di eta */


Mi da risultato 0


Devi mettere le classi di età una per volta, ovviamente… 

AND pb_status = 'A' 
vuol dire che il problema è attivo
grazie mille.
Non sai mica il comando x estrarre Tutta e Solo la terapia legata ad un problema e quindi nel mio caso al problema lombalgia e lombosciatalgia ?(magari con data)

Mario

P.S. Si possono selezionare le classi di eta' in una unica query senza fare singole estrazioni variano le classi di eta'?
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 246
Punti : 3088
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 63

Visualizza il profilo

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  Lucio Mignone il Dom 18 Mag 2014 - 19:12


Mario

P.S. Si possono selezionare le classi di eta' in una unica query senza fare singole estrazioni variano le classi di eta'?

Ma a questo punto ti conviene togliere l'istruzione che seleziona i pz in base all'età  AND ___eta___ between 0 and 50 che è superflua se vuoi estrarre i pz da 0 a 110 anni (praticamente di qualsiasi età) in un colpo solo. In questo modo estrarrai tutti i pz da 0 a 110 così come vuoi tu che poi potrai ordinare in base all'età (ORDER BY 5,1,2,3) e successivamente li potrai suddividere con excel nelle varie classi che ti interessano. Mi pare più semplice, perché 
se proprio ci tieni a farlo con un unica query si dovrebbero unire le tre query distinte, una per ogni classe d'età.
avatar
Lucio Mignone
Membro Senior
Membro Senior

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

Visualizza il profilo http://comeva.altervista.org/

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  Admin il Dom 18 Mag 2014 - 19:39

mario shirt ha scritto:
Admin ha scritto:Come base si può partire da questa:

Select distinct cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia  /*<< permette di variare ilperiodo della terapia da esaminare */
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 0 and 110         /* <<Selezionare la fascia di eta */
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */
ORDER BY 1,2,3

Grazie mille Admin , sempre gentilissimo. 

Dimmi se ho capito bene , leggi cosa ho scritto in rosso.
Mi puoi dire come fare a estrarre Tutta e Solo la terapia legata al problema lombalgia e lombosciatalgia (magari con data)

Ho provato a selezionare le classi di eta' scrivendo:
AND ___eta___ between 0 and 50         /* <<Selezionare la fascia di eta */
AND ___eta___ between 51 and 70         /* <<Selezionare la fascia di eta */
AND ___eta___ between 71 and 110         /* <<Selezionare la fascia di eta */

Mi da risultato 0

Cosa significa:
AND pb_status = 'A'

Se hai tempo x "illuminarmi" infinitamente grato e debitore. cheers 

Mario
Quello che hai indicato in rosso serve appunto a restringere la data delle terapie all'ultimo anno.
Per collegare la terapia al problema si può usare la clausola AND Ur_Pb_Id=Pb_code.
Prova questa che suddivide l'estrazione in fasce d'età.

Select distinct '0 - 50' Fascia_eta, cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice AND t.Ur_Pb_Id= b.Pb_code
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 0 and 50       
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */

UNION
Select distinct '51 - 70' Fascia_eta, cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice AND t.Ur_Pb_Id= b.Pb_code
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 51 and 70        
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */

UNION
Select distinct '71 - 110' Fascia_eta, cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice AND t.Ur_Pb_Id= b.Pb_code
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 71 and 110        
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */

ORDER BY 1,2,3,4


Se interessano solo le terapie legate al problema e le rispettive date di prescrizione, si possono usare le viste e quindi in questo caso è necessario selezionare il periodo da valutare (data inizio e fine):

SELECT '0 - 50' Fascia_Eta,  cognome, nome, datanasc, YEARS(datanasc, Today()) eta, sesso, codfiscale, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND eta BETWEEN 0 AND 50
UNION
SELECT '51 - 70' Fascia_Eta,  cognome, nome, datanasc, YEARS(datanasc, Today()) eta, sesso, codfiscale, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND eta BETWEEN 51 AND 70
UNION
SELECT '71 - 110' Fascia_Eta,  cognome, nome, datanasc, YEARS(datanasc, Today()) eta, sesso, codfiscale, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND eta BETWEEN 71 AND 110
ORDER BY 1,2,3,4
  

_________________
L'Amministratore
Giuseppe Blasio
avatar
Admin
Admin
Admin

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

Visualizza il profilo http://utentimillewin.forumattivo.it

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  mario shirt il Dom 18 Mag 2014 - 23:05

Lucio Mignone ha scritto:

Mario

P.S. Si possono selezionare le classi di eta' in una unica query senza fare singole estrazioni variano le classi di eta'?

Ma a questo punto ti conviene togliere l'istruzione che seleziona i pz in base all'età  AND ___eta___ between 0 and 50 che è superflua se vuoi estrarre i pz da 0 a 110 anni (praticamente di qualsiasi età) in un colpo solo. In questo modo estrarrai tutti i pz da 0 a 110 così come vuoi tu che poi potrai ordinare in base all'età (ORDER BY 5,1,2,3) e successivamente li potrai suddividere con excel nelle varie classi che ti interessano. Mi pare più semplice, perché 
se proprio ci tieni a farlo con un unica query si dovrebbero unire le tre query distinte, una per ogni classe d'età.

avevo pensato proprio di utilizzare excel come faccio quasi sempre, ma speravo di ottenere dati semplicemente anche da colleghi che non utilizzano excel  Sad  Surprised

grazie

Mario

P.S. c'e' Admin  cheers  cheers  sunny


Ultima modifica di mario shirt il Dom 18 Mag 2014 - 23:14, modificato 1 volta
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 246
Punti : 3088
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 63

Visualizza il profilo

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  mario shirt il Dom 18 Mag 2014 - 23:12

Admin ha scritto:
mario shirt ha scritto:
Admin ha scritto:Come base si può partire da questa:

Select distinct cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia  /*<< permette di variare ilperiodo della terapia da esaminare */
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 0 and 110         /* <<Selezionare la fascia di eta */
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */
ORDER BY 1,2,3

Grazie mille Admin , sempre gentilissimo. 

Dimmi se ho capito bene , leggi cosa ho scritto in rosso.
Mi puoi dire come fare a estrarre Tutta e Solo la terapia legata al problema lombalgia e lombosciatalgia (magari con data)

Ho provato a selezionare le classi di eta' scrivendo:
AND ___eta___ between 0 and 50         /* <<Selezionare la fascia di eta */
AND ___eta___ between 51 and 70         /* <<Selezionare la fascia di eta */
AND ___eta___ between 71 and 110         /* <<Selezionare la fascia di eta */

Mi da risultato 0

Cosa significa:
AND pb_status = 'A'

Se hai tempo x "illuminarmi" infinitamente grato e debitore. cheers 

Mario
Quello che hai indicato in rosso serve appunto a restringere la data delle terapie all'ultimo anno.
Per collegare la terapia al problema si può usare la clausola AND Ur_Pb_Id=Pb_code.
Prova questa che suddivide l'estrazione in fasce d'età.

Select distinct '0 - 50' Fascia_eta, cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice AND t.Ur_Pb_Id= b.Pb_code
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 0 and 50       
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */

UNION
Select distinct '51 - 70' Fascia_eta, cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice AND t.Ur_Pb_Id= b.Pb_code
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 51 and 70        
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */

UNION
Select distinct '71 - 110' Fascia_eta, cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice AND t.Ur_Pb_Id= b.Pb_code
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 71 and 110        
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */

ORDER BY 1,2,3,4


Se interessano solo le terapie legate al problema e le rispettive date di prescrizione, si possono usare le viste e quindi in questo caso è necessario selezionare il periodo da valutare (data inizio e fine):

SELECT '0 - 50' Fascia_Eta,  cognome, nome, datanasc, YEARS(datanasc, Today()) eta, sesso, codfiscale, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND eta BETWEEN 0 AND 50
UNION
SELECT '51 - 70' Fascia_Eta,  cognome, nome, datanasc, YEARS(datanasc, Today()) eta, sesso, codfiscale, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND eta BETWEEN 51 AND 70
UNION
SELECT '71 - 110' Fascia_Eta,  cognome, nome, datanasc, YEARS(datanasc, Today()) eta, sesso, codfiscale, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND eta BETWEEN 71 AND 110
ORDER BY 1,2,3,4
  


funziona tutto benissimo bounce  bounce   grazie ora  posso fare piccole modifiche x adattare all'audit

Mario
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 246
Punti : 3088
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 63

Visualizza il profilo

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  mario shirt il Mar 27 Mag 2014 - 13:52

mario shirt ha scritto:
Admin ha scritto:


Select distinct '0 - 50' Fascia_eta, cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice AND t.Ur_Pb_Id= b.Pb_code
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 0 and 50       
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */

UNION
Select distinct '51 - 70' Fascia_eta, cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice AND t.Ur_Pb_Id= b.Pb_code
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 51 and 70        
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */

UNION
Select distinct '71 - 110' Fascia_eta, cognome, nome, nascita, sesso, CAST(YEARS(nascita, today()) AS CHAR (4)) ___eta___, nome_pbl Problema,
(Select list(distinct co_des) FROM cart_terap t WHERE b.codice=t.codice AND t.Ur_Pb_Id= b.Pb_code
AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) terapia
FROM pazienti p, cart_pazpbl b, nos_002 n WHERE p.codice=b.codice AND p.codice=n.codice
AND ___eta___ between 71 and 110        
AND decesso is null AND (n.pa_drevoca is null OR n.pa_drevoca> Today())
AND (cp_code LIKE '722.%' OR cp_code LIKE  '724.%')
AND pb_status = 'A'
AND n.pa_medi like '%'   /*<< Inserire codice medicina gruppo */

ORDER BY 1,2,3,4


Se interessano solo le terapie legate al problema e le rispettive date di prescrizione, si possono usare le viste e quindi in questo caso è necessario selezionare il periodo da valutare (data inizio e fine):

SELECT '0 - 50' Fascia_Eta,  cognome, nome, datanasc, YEARS(datanasc, Today()) eta, sesso, codfiscale, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND eta BETWEEN 0 AND 50
UNION
SELECT '51 - 70' Fascia_Eta,  cognome, nome, datanasc, YEARS(datanasc, Today()) eta, sesso, codfiscale, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND eta BETWEEN 51 AND 70
UNION
SELECT '71 - 110' Fascia_Eta,  cognome, nome, datanasc, YEARS(datanasc, Today()) eta, sesso, codfiscale, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND eta BETWEEN 71 AND 110
ORDER BY 1,2,3,4
  


C'e' qualche volontario in grado di adattare  a postgress le precedenti query sulla lombalgia?

Grazie in anticipo

Mario
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 246
Punti : 3088
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 63

Visualizza il profilo

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  Cervino il Mar 3 Giu 2014 - 23:47

                               Prima query sulla Lombalgia in PostgreSQL ( estrazione veloce ) : 

Select  Distinct  Cast( ' 0 - 50  ' As Char(10))  As  fascia_eta ,  Cast( p.cognome As Char(16)) ,  p.nome , 
Cast( DateFormat( p.nascita, 'yyyy/mm/dd' ) As Char(16))  As  nato_il ,    p.sesso , 
Days( p.nascita , Today())*24/8766  As  eta ,          b.nome_pbl     As  problema ,
Case  b.pb_status || b. modalita  When  'AA'  Then  ' 2 Attivo   '   When  'AC'  Then  ' 1 Rilevante  '  
           When  'IC'  Then  ' 3 Continuativo  '  When  'IA'  Then  ' 4 Chiuso   ' 
           Else  ' 5 ' || b.pb_status || b. modalita  End        As  pbl_status ,
Array_To_String( Array ( Select  Max( co_des)  From  cart_terap t  Where  b.codice = t.codice 
                And  t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'                              Or  t.co_atc  Like  'H02%' )    And  t.data_open  > Today()-365  Group By  t.data_open 
               Order By  t.data_open  Desc ) , ' , ')  
                     _terapia_ ,
Array_To_String( Array ( Select  InitCap( Max( g.descrizione ))  From  mn_v_tbl_generica  g  ,                       cart_terap t  Where  t.codice = p.codice  And  g.codice = t.co_atc   And  t.Ur_Pb_Id = b.Pb_code 
                And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc  Like  'H02%' ) 
               And  t.data_open  > Today()-365  Group By  t.data_open  Order By  t.data_open  Desc ) , ' , ')       _principio_attivo_  ,
                 Cast( ' ' As Char(1))   As  s
FROM   ( pazienti p   Left  Join   nos_002 n   On   p.codice = n.codice )
                                     Left  Join   cart_pazpbl b   On   p.codice = b.codice
Where  n.pa_medi  Like  '%'      /* Inserire eventuale codice medicina di gruppo */
 And  p.pa_convenzione = 'S'                    
 And  Days( p.nascita , Today())*24/8766   Between   0   And  50 
 And  ( n.pa_drevoca Is Null  Or  n.pa_drevoca > Today()  Or  ( n.pa_drevoca Between Today()-365
 And Today()  And  n.motivo_revoca ='S' ))     And    p.decesso  Is Null
 And  ( ( b.cp_code  Like  '722.%'  Or b. cp_code  Like  '724.%' )   And Not  ( b.pb_status = 'I' 
              And b.modalita  = 'A' ) )
                                                           UNION
Select  Distinct  Cast( ' 51 - 70  ' As Char(10))  As  fascia_eta ,  Cast( p.cognome As Char(16)) ,  p.nome , 
Cast( DateFormat( p.nascita, 'yyyy/mm/dd' ) As Char(16))  As  nato_il ,    p.sesso , 
Days( p.nascita , Today())*24/8766  As  eta ,          b.nome_pbl     As  problema ,
Case  b.pb_status || b. modalita  When  'AA'  Then  ' 2 Attivo   '   When  'AC'  Then  ' 1 Rilevante  '  
           When  'IC'  Then  ' 3 Continuativo  '  When  'IA'  Then  ' 4 Chiuso   ' 
           Else  ' 5 ' || b.pb_status || b. modalita  End        As  pbl_status ,
Array_To_String( Array ( Select  Max( co_des)  From  cart_terap t  Where  b.codice = t.codice 
                And  t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'                                Or  t.co_atc  Like  'H02%' )    And  t.data_open  > Today()-365  Group By  t.data_open 
               Order By  t.data_open  Desc ) , ' , ')  
                     _terapia_ ,
Array_To_String( Array ( Select  InitCap( Max( g.descrizione ))  From  mn_v_tbl_generica  g  ,                     cart_terap t  Where  t.codice = p.codice  And  g.codice = t.co_atc   And  t.Ur_Pb_Id = b.Pb_code 
                And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc  Like  'H02%' ) 
               And  t.data_open  > Today()-365  Group By  t.data_open  Order By  t.data_open  Desc ) , ' , ')       _principio_attivo_  ,
                  Cast( ' ' As Char(1))   As  s
FROM   ( pazienti p   Left  Join   nos_002 n   On   p.codice = n.codice )
                                     Left  Join   cart_pazpbl b   On   p.codice = b.codice
Where  n.pa_medi  Like  '%'      /* Inserire eventuale codice medicina di gruppo */
 And  p.pa_convenzione = 'S'                    
 And  Days( p.nascita , Today())*24/8766   Between   51  And  70 
 And  ( n.pa_drevoca Is Null  Or  n.pa_drevoca > Today()  Or  ( n.pa_drevoca Between Today()-365
 And Today()  And  n.motivo_revoca ='S' ))     And    p.decesso  Is Null
 And  ( ( b.cp_code  Like  '722.%'  Or b. cp_code  Like  '724.%' )   And Not  ( b.pb_status = 'I' 
              And b.modalita  = 'A' ) )
                                                        UNION
Select  Distinct  Cast( ' 71 - 110  ' As Char(10))  As  fascia_eta ,  Cast( p.cognome As Char(16)) ,  p.nome , 
Cast( DateFormat( p.nascita, 'yyyy/mm/dd' ) As Char(16))  As  nato_il ,    p.sesso , 
Days( p.nascita , Today())*24/8766  As  eta ,          b.nome_pbl     As  problema ,
Case  b.pb_status || b. modalita  When  'AA'  Then  ' 2 Attivo   '   When  'AC'  Then  ' 1 Rilevante  '  
           When  'IC'  Then  ' 3 Continuativo  '  When  'IA'  Then  ' 4 Chiuso   ' 
           Else  ' 5 ' || b.pb_status || b. modalita  End        As  pbl_status ,
Array_To_String( Array ( Select  Max( co_des)  From  cart_terap t  Where  b.codice = t.codice 
                And  t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'                                Or  t.co_atc  Like  'H02%' )    And  t.data_open  > Today()-365  Group By  t.data_open 
               Order By  t.data_open  Desc ) , ' , ')  
                     _terapia_ ,
Array_To_String( Array ( Select  InitCap( Max( g.descrizione ))  From  mn_v_tbl_generica  g  ,                     cart_terap t  Where  t.codice = p.codice  And  g.codice = t.co_atc   And  t.Ur_Pb_Id = b.Pb_code 
                And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc  Like  'H02%' ) 
               And  t.data_open  > Today()-365  Group By  t.data_open  Order By  t.data_open  Desc ) , ' , ')       _principio_attivo_  ,
                 Cast( ' ' As Char(1))   As  s
FROM   ( pazienti p   Left  Join   nos_002 n   On   p.codice = n.codice )
                                     Left  Join   cart_pazpbl b   On   p.codice = b.codice
Where  n.pa_medi  Like  '%'      /* Inserire eventuale codice medicina di gruppo */
 And  p.pa_convenzione = 'S'                    
 And  Days( p.nascita , Today())*24/8766   Between   71   And  110 
 And  ( n.pa_drevoca Is Null  Or  n.pa_drevoca > Today()  Or  ( n.pa_drevoca Between Today()-365
 And Today()  And  n.motivo_revoca ='S' ))     And    p.decesso  Is Null
 And  ( ( b.cp_code  Like  '722.%'  Or b. cp_code  Like  '724.%' )   And Not  ( b.pb_status = 'I' 
              And b.modalita  = 'A' ) )
Order By   1 , 2 , 3 , 4


                         

ho provato ad aggiungere la colonna   _principio_attivo_  ma il campo restituito non è quello desiderato ;
vorrei ottenere il principio attivo che compare nella finestra  Scelta Farmaco  di MW nella seconda riga del terzo riquadro :
chiedo agli Esperti del Forum eventuali suggerimenti o soluzioni al riguardo , grazie .


                 la seconda estrazione è piu' sofferta ( meno gradita al motore di ricerca PostgreSQL ) :


Select  Distinct  Cast( ' 0 - 50  ' As Char(10))  As  fascia_eta ,  Cast( p.cognome As Char(16)) ,  p.nome , 
Cast( DateFormat( p.nascita, 'yyyy/mm/dd' ) As Char(16))  As  nato_il ,    p.sesso , 
Days( p.nascita , Today())*24/8766  As  eta ,          b.nome_pbl     As  problema ,
t.data_open  As  terap_d ,  t.co_des  As  farmaco , 
                 Cast( ' ' As Char(1))   As  s
FROM   (( pazienti p   Left  Join   nos_002 n   On   p.codice = n.codice )
                                      Left  Join   cart_pazpbl b   On   p.codice = b.codice )
                                      Left  Join   cart_terap t   On   p.codice = b.codice
Where  n.pa_medi  Like  '%'      /* Inserire eventuale codice medicina di gruppo */
 And  p.pa_convenzione = 'S'                    
 And  Days( p.nascita , Today())*24/8766   Between   0   And  50 
 And  ( n.pa_drevoca Is Null  Or  n.pa_drevoca > Today()  Or  ( n.pa_drevoca Between Today()-365
           And Today()  And  motivo_revoca ='S' ))     And    p.decesso  Is Null
 And  (( cp_code  Like  '722.%'  Or  cp_code  Like  '724.%' )   And Not  ( b.pb_status = 'I' 
              And b.modalita  = 'A' ))
 And  ( t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc              

Like  'H02%' )    And  t.data_open  > Today()-365 )
                                                              UNION
Select  Distinct  Cast( ' 51 - 70  ' As Char(10))  As  fascia_eta , Cast( p.cognome As Char(16)) ,  p.nome ,
Cast( DateFormat( p.nascita, 'yyyy/mm/dd' ) As Char(16))  As  nato_il ,    p.sesso , 
Days( p.nascita , Today())*24/8766  As  eta ,          b.nome_pbl     As  problema ,
t.data_open  As  terap_d ,  t.co_des  As  farmaco , 
                 Cast( ' ' As Char(1))   As  s
FROM   (( pazienti p   Left  Join   nos_002 n   On   p.codice = n.codice )
                                      Left  Join   cart_pazpbl b   On   p.codice = b.codice )
                                      Left  Join   cart_terap t   On   p.codice = b.codice
Where  n.pa_medi  Like  '%'      /* Inserire eventuale codice medicina di gruppo */
 And  p.pa_convenzione = 'S'                    
 And  Days( p.nascita , Today())*24/8766   Between   51   And  70 
 And  ( n.pa_drevoca Is Null  Or  n.pa_drevoca > Today()  Or  ( n.pa_drevoca Between Today()-365
           And Today()  And  motivo_revoca ='S' ))     And    p.decesso  Is Null
 And  (( cp_code  Like  '722.%'  Or  cp_code  Like  '724.%' )   And Not  ( b.pb_status = 'I' 
              And b.modalita  = 'A' ))
 And  ( t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc             

Like  'H02%' )    And  t.data_open  > Today()-365 )
                                                              UNION
Select  Distinct  Cast( ' 71 - 110' As Char(10))  As  fascia_eta , Cast( p.cognome As Char(16)) ,  p.nome ,
Cast( DateFormat( p.nascita, 'yyyy/mm/dd' ) As Char(16))  As  nato_il ,    p.sesso , 
Days( p.nascita , Today())*24/8766  As  eta ,          b.nome_pbl     As  problema ,
t.data_open  As  terap_d ,  t.co_des  As  farmaco , 
                 Cast( ' ' As Char(1))   As  s
FROM   (( pazienti p   Left  Join   nos_002 n   On   p.codice = n.codice )
                                      Left  Join   cart_pazpbl b   On   p.codice = b.codice )
                                      Left  Join   cart_terap t   On   p.codice = b.codice
Where  n.pa_medi  Like  '%'      /* Inserire eventuale codice medicina di gruppo */
 And  p.pa_convenzione = 'S'                    
 And  Days( p.nascita , Today())*24/8766   Between   71   And  110 
 And  ( n.pa_drevoca Is Null  Or  n.pa_drevoca > Today()  Or  ( n.pa_drevoca Between Today()-365
           And Today()  And  motivo_revoca ='S' ))     And    p.decesso  Is Null
 And  (( cp_code  Like  '722.%'  Or  cp_code  Like  '724.%' )   And Not  ( b.pb_status = 'I' 
              And b.modalita  = 'A' ))
 And  ( t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc              

Like  'H02%' )    And  t.data_open  > Today()-365 )
Order By   1 , 2 , 3 , 4 


Saluti ,  Sergio

Cervino
Membro Junior
Membro Junior

Messaggi : 219
Punti : 2960
Voti per importanza dei messaggi : 16
Data d'iscrizione : 03.03.11
Età : 63
Località : Orzivecchi (BS)

Visualizza il profilo

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  GiampiMaz il Mer 4 Giu 2014 - 12:12

Ciao Sergio

come sai millewin ha una certa ridondanza di tabelle e modi diversi di accedere ai dati.
Ho provato varie soluzioni (non avendo postgres utilizzo la normale sintassi, e ho tolto And t.Ur_Pb_Id = b.Pb_code che è ininfluente per il problema)
questi 3 modi danno risultato uguale a quello che penso ottenga tu in postgres


(Select list (distinct g.Estesa) FROM mn_v_tbl_generica g, cart_terap t WHERE t.codice=p.codice and g.codice=t.co_atc AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_attivo,

(Select list (distinct g.descrizione) FROM mn_v_tbl_generica g, cart_terap t WHERE t.codice=p.codice and g.codice=t.co_atc AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_2,


(Select list (distinct g.atc_des) FROM tab_atc g, cart_terap t WHERE t.codice=p.codice and g.atc_cod=t.co_atc AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_3

se invece uso 

(Select list (distinct g.Estesa) FROM mn_v_tbl_generica g, cart_terap t WHERE t.codice=p.codice and g.codice=t.te_attivo AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_attivo_4

o

(Select list (distinct g.descrizione) FROM mn_v_tbl_generica g, cart_terap t WHERE t.codice=p.codice and g.codice=t.te_attivo AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_attivo_5


il risultato è leggermente diverso e il principio attivo descritto non è più ad esempio DICLOFENAC ma DICLOFENAC SODICO. 

per spiegarmi la tabella MN_V_TBL_GENERICA  è la stessa, il campo g.DESCRIZIONE (o g.ESTESA) è lo stesso ma l'interfaccio con t.te_attivo e non t.co_atc.

Non so se era questo il risultato che volevi, altrimenti si possono esplorare altre tabelle (es MN_V_PRODOTTI).
Se ti sono stato utile potresti darci qualche chiarimento sull'uso di postgres rispetto al normale sql di mille? Embarassed 
giampiero
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  mario shirt il Mer 4 Giu 2014 - 23:22

GiampiMaz ha scritto:Ciao Sergio

come sai millewin ha una certa ridondanza di tabelle e modi diversi di accedere ai dati.
Ho provato varie soluzioni (non avendo postgres utilizzo la normale sintassi, e ho tolto And t.Ur_Pb_Id = b.Pb_code che è ininfluente per il problema)
questi 3 modi danno risultato uguale a quello che penso ottenga tu in postgres


(Select list (distinct g.Estesa) FROM mn_v_tbl_generica g, cart_terap t WHERE t.codice=p.codice and g.codice=t.co_atc AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_attivo,

(Select list (distinct g.descrizione) FROM mn_v_tbl_generica g, cart_terap t WHERE t.codice=p.codice and g.codice=t.co_atc AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_2,


(Select list (distinct g.atc_des) FROM tab_atc g, cart_terap t WHERE t.codice=p.codice and g.atc_cod=t.co_atc AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_3

se invece uso 

(Select list (distinct g.Estesa) FROM mn_v_tbl_generica g, cart_terap t WHERE t.codice=p.codice and g.codice=t.te_attivo AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_attivo_4

o

(Select list (distinct g.descrizione) FROM mn_v_tbl_generica g, cart_terap t WHERE t.codice=p.codice and g.codice=t.te_attivo AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_attivo_5


 
giampiero

mi danno sempre errore 37000   Sad  Sad  Sad

Mario
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 246
Punti : 3088
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 63

Visualizza il profilo

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  mario shirt il Mer 4 Giu 2014 - 23:31

posto la query che avevo adattata per l'audit lombalgia adattata da un collega in postgres

SELECT '0 - 30' Fascia_Eta,  cognome, nome, datanasc, (today()-datanasc)/365 eta, sesso, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND (today()-datanasc)/365 BETWEEN 0 AND 30
UNION
SELECT '31 - 50' Fascia_Eta,  cognome, nome, datanasc,(today()-datanasc)/365 eta, sesso, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND (today()-datanasc)/365 BETWEEN 31 AND 50
UNION
SELECT '51 - 70' Fascia_Eta,  cognome, nome, datanasc, (today()-datanasc)/365 eta, sesso, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND (today()-datanasc)/365 BETWEEN 51 AND 70
UNION
SELECT '71 - 110' Fascia_Eta,  cognome, nome, datanasc, (today()-datanasc)/365 eta, sesso, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND (today()-datanasc)/365 BETWEEN 71 AND 110
ORDER BY 1,2,3,4

A chi usa Postgres provarla e commentarla. Chi l'ha usata ha tirato fuori quello che serviva.

Mario
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 246
Punti : 3088
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 63

Visualizza il profilo

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  Cervino il Gio 5 Giu 2014 - 1:00

mario shirt ha scritto:posto la query che avevo adattata per l'audit lombalgia adattata da un collega in postgres

SELECT '0 - 30' Fascia_Eta,  cognome, nome, datanasc, (today()-datanasc)/365 eta, sesso, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND (today()-datanasc)/365 BETWEEN 0 AND 30
UNION
SELECT '31 - 50' Fascia_Eta,  cognome, nome, datanasc,(today()-datanasc)/365 eta, sesso, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND (today()-datanasc)/365 BETWEEN 31 AND 50
UNION
SELECT '51 - 70' Fascia_Eta,  cognome, nome, datanasc, (today()-datanasc)/365 eta, sesso, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND (today()-datanasc)/365 BETWEEN 51 AND 70
UNION
SELECT '71 - 110' Fascia_Eta,  cognome, nome, datanasc, (today()-datanasc)/365 eta, sesso, problema, datavisita, terapia
FROM V_TERAPIE
WHERE (ICD9 like '722.%' OR ICD9 like '724.%')
AND (Atc Like 'N02%' OR Atc Like 'M01%' OR Atc Like 'H02%')
AND (today()-datanasc)/365 BETWEEN 71 AND 110
ORDER BY 1,2,3,4

A chi usa Postgres provarla e commentarla. Chi l'ha usata ha tirato fuori quello che serviva.

Mario
Nonostante i vari tentativi di modifica ed implementazione il risultato è sempre 0 . Una delle poche ( unica ? ) query che funziona utilizzano le viste è :   SELECT * FROM v_pazienti ; numerose altre mandano in tilt MU ; in ogni caso le Viste rappresentano un limite in PostgreSQL , a mio parere )

sul mio datato MillePS ( evidentemente esistono situazioni eterogenee ) funziona velocemente la seguente query :

Select  Distinct  Cast( ' 0 - 30  ' As Char(10))  As  fascia_eta ,  Cast( p.cognome As Char(16)) ,  p.nome ,
Cast( DateFormat( p.nascita, 'yyyy/mm/dd' ) As Char(16))  As  nato_il ,    p.sesso ,
Days( p.nascita , Today())*24/8766  As  eta ,          b.nome_pbl     As  problema ,
Case  b.pb_status || b. modalita  When  'AA'  Then  ' 2 Attivo   '   When  'AC'  Then  ' 1 Rilevante  ' 
           When  'IC'  Then  ' 3 Continuativo  '  When  'IA'  Then  ' 4 Chiuso   '
           Else  ' 5 ' || b.pb_status || b. modalita  End        As  pbl_status ,
Array_To_String( Array ( Select  Max( co_des)  From  cart_terap t  Where  b.codice = t.codice
                And  t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'                              Or  t.co_atc  Like  'H02%' )    And  t.data_open  > Today()-365  Group By  t.data_open
               Order By  t.data_open  Desc ) , ' , ') 
                     _terapia_ ,
Array_To_String( Array ( Select  InitCap( Max( g.descrizione ))  From  mn_v_tbl_generica  g  ,                       cart_terap t  Where  t.codice = p.codice  And  g.codice = t.co_atc   And  t.Ur_Pb_Id = b.Pb_code
                And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc  Like  'H02%' )
               And  t.data_open  > Today()-365  Group By  t.data_open  Order By  t.data_open  Desc ) , ' , ')       _principio_attivo_  ,
                 Cast( ' ' As Char(1))   As  s
FROM   ( pazienti p   Left  Join   nos_002 n   On   p.codice = n.codice )
                                     Left  Join   cart_pazpbl b   On   p.codice = b.codice
Where  n.pa_medi  Like  '%'      /* Inserire eventuale codice medicina di gruppo */
 And  p.pa_convenzione = 'S'                   
 And  Days( p.nascita , Today())*24/8766   Between   0   And  30
 And  ( n.pa_drevoca Is Null  Or  n.pa_drevoca > Today()  Or  ( n.pa_drevoca Between Today()-365
 And Today()  And  n.motivo_revoca ='S' ))     And    p.decesso  Is Null
 And  ( ( b.cp_code  Like  '722.%'  Or b. cp_code  Like  '724.%' )   And Not  ( b.pb_status = 'I'
              And b.modalita  = 'A' ) )
And  p.codice  In  ( Select  t.codice  From  cart_terap t  Where  b.codice = t.codice  And  t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc     Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc  Like  'H02%' )  And  t.data_open  > Today()-365 )
                                                           UNION
Select  Distinct  Cast( ' 31 - 50  ' As Char(10))  As  fascia_eta ,  Cast( p.cognome As Char(16)) ,  p.nome ,  Cast( DateFormat( p.nascita, 'yyyy/mm/dd' ) As Char(16))  As  nato_il ,    p.sesso ,
Days( p.nascita , Today())*24/8766  As  eta ,          b.nome_pbl     As  problema ,
Case  b.pb_status || b. modalita  When  'AA'  Then  ' 2 Attivo   '   When  'AC'  Then  ' 1 Rilevante  ' 
           When  'IC'  Then  ' 3 Continuativo  '  When  'IA'  Then  ' 4 Chiuso   '
           Else  ' 5 ' || b.pb_status || b. modalita  End        As  pbl_status ,
Array_To_String( Array ( Select  Max( co_des)  From  cart_terap t  Where  b.codice = t.codice
                And  t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'                                Or  t.co_atc  Like  'H02%' )    And  t.data_open  > Today()-365  Group By  t.data_open
               Order By  t.data_open  Desc ) , ' , ') 
                     _terapia_ ,
Array_To_String( Array ( Select  InitCap( Max( g.descrizione ))  From  mn_v_tbl_generica  g  ,                     cart_terap t  Where  t.codice = p.codice  And  g.codice = t.co_atc   And  t.Ur_Pb_Id = b.Pb_code
                And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc  Like  'H02%' )
               And  t.data_open  > Today()-365  Group By  t.data_open  Order By  t.data_open  Desc ) , ' , ')       _principio_attivo_  ,
                  Cast( ' ' As Char(1))   As  s
FROM   ( pazienti p   Left  Outer  Join   nos_002 n   On   p.codice = n.codice )
                                     Left  Outer  Join   cart_pazpbl b   On   p.codice = b.codice
Where  n.pa_medi  Like  '%'      /* Inserire eventuale codice medicina di gruppo */
 And  p.pa_convenzione = 'S'                   
 And  Days( p.nascita , Today())*24/8766   Between   31  And  50
 And  ( n.pa_drevoca Is Null  Or  n.pa_drevoca > Today()  Or  ( n.pa_drevoca Between Today()-365
 And Today()  And  n.motivo_revoca ='S' ))     And    p.decesso  Is Null
 And  ( ( b.cp_code  Like  '722.%'  Or b. cp_code  Like  '724.%' )   And Not  ( b.pb_status = 'I'
              And b.modalita  = 'A' ) )
And  p.codice  In  ( Select  t.codice  From  cart_terap t  Where  b.codice = t.codice  And  t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc     Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc  Like  'H02%' )  And  t.data_open  > Today()-365 )
                                                           UNION
Select  Distinct  Cast( ' 51 - 70  ' As Char(10))  As  fascia_eta ,  Cast( p.cognome As Char(16)) ,  p.nome ,  Cast( DateFormat( p.nascita, 'yyyy/mm/dd' ) As Char(16))  As  nato_il ,    p.sesso ,
Days( p.nascita , Today())*24/8766  As  eta ,          b.nome_pbl     As  problema ,
Case  b.pb_status || b. modalita  When  'AA'  Then  ' 2 Attivo   '   When  'AC'  Then  ' 1 Rilevante  ' 
           When  'IC'  Then  ' 3 Continuativo  '  When  'IA'  Then  ' 4 Chiuso   '
           Else  ' 5 ' || b.pb_status || b. modalita  End        As  pbl_status ,
Array_To_String( Array ( Select  Max( co_des)  From  cart_terap t  Where  b.codice = t.codice
                And  t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'                                Or  t.co_atc  Like  'H02%' )    And  t.data_open  > Today()-365  Group By  t.data_open
               Order By  t.data_open  Desc ) , ' , ') 
                     _terapia_ ,
Array_To_String( Array ( Select  InitCap( Max( g.descrizione ))  From  mn_v_tbl_generica  g  ,                     cart_terap t  Where  t.codice = p.codice  And  g.codice = t.co_atc   And  t.Ur_Pb_Id = b.Pb_code
                And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc  Like  'H02%' )
               And  t.data_open  > Today()-365  Group By  t.data_open  Order By  t.data_open  Desc ) , ' , ')       _principio_attivo_  ,
                  Cast( ' ' As Char(1))   As  s
FROM   ( pazienti p   Left  Outer  Join   nos_002 n   On   p.codice = n.codice )
                                     Left  Outer  Join   cart_pazpbl b   On   p.codice = b.codice
Where  n.pa_medi  Like  '%'      /* Inserire eventuale codice medicina di gruppo */
 And  p.pa_convenzione = 'S'                   
 And  Days( p.nascita , Today())*24/8766   Between   51  And  70
 And  ( n.pa_drevoca Is Null  Or  n.pa_drevoca > Today()  Or  ( n.pa_drevoca Between Today()-365
 And Today()  And  n.motivo_revoca ='S' ))     And    p.decesso  Is Null
 And  ( ( b.cp_code  Like  '722.%'  Or b. cp_code  Like  '724.%' )   And Not  ( b.pb_status = 'I'
              And b.modalita  = 'A' ) )
And  p.codice  In  ( Select  t.codice  From  cart_terap t  Where  b.codice = t.codice  And  t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc     Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc  Like  'H02%' )  And  t.data_open  > Today()-365 )
                                                        UNION
Select  Distinct  Cast( ' 71 - 110  ' As Char(10))  As  fascia_eta ,  Cast( p.cognome As Char(16)) ,  p.nome ,  Cast( DateFormat( p.nascita, 'yyyy/mm/dd' ) As Char(16))  As  nato_il ,    p.sesso ,
Days( p.nascita , Today())*24/8766  As  eta ,          b.nome_pbl     As  problema ,
Case  b.pb_status || b. modalita  When  'AA'  Then  ' 2 Attivo   '   When  'AC'  Then  ' 1 Rilevante  ' 
           When  'IC'  Then  ' 3 Continuativo  '  When  'IA'  Then  ' 4 Chiuso   '
           Else  ' 5 ' || b.pb_status || b. modalita  End        As  pbl_status ,
Array_To_String( Array ( Select  Max( co_des)  From  cart_terap t  Where  b.codice = t.codice
                And  t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'                                Or  t.co_atc  Like  'H02%' )    And  t.data_open  > Today()-365  Group By  t.data_open
               Order By  t.data_open  Desc ) , ' , ') 
                     _terapia_ ,
Array_To_String( Array ( Select  InitCap( Max( g.descrizione ))  From  mn_v_tbl_generica  g  ,                     cart_terap t  Where  t.codice = p.codice  And  g.codice = t.co_atc   And  t.Ur_Pb_Id = b.Pb_code
                And ( t.co_atc  Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc  Like  'H02%' )
               And  t.data_open  > Today()-365  Group By  t.data_open  Order By  t.data_open  Desc ) , ' , ')       _principio_attivo_  ,
                 Cast( ' ' As Char(1))   As  s
FROM   ( pazienti p   Left  Outer  Join   nos_002 n   On   p.codice = n.codice )
                                     Left  Outer  Join   cart_pazpbl b   On   p.codice = b.codice
Where  n.pa_medi  Like  '%'      /* Inserire eventuale codice medicina di gruppo */
 And  p.pa_convenzione = 'S'                   
 And  Days( p.nascita , Today())*24/8766   Between   71   And  110
 And  ( n.pa_drevoca Is Null  Or  n.pa_drevoca > Today()  Or  ( n.pa_drevoca Between Today()-365
 And Today()  And  n.motivo_revoca ='S' ))     And    p.decesso  Is Null
 And  ( ( b.cp_code  Like  '722.%'  Or b. cp_code  Like  '724.%' )   And Not  ( b.pb_status = 'I'
              And b.modalita  = 'A' ) )
And  p.codice  In  ( Select  t.codice  From  cart_terap t  Where  b.codice = t.codice  And  t.Ur_Pb_Id = b.Pb_code  And ( t.co_atc     Like  'N02%'  Or  t.co_atc  Like  'M01%'  Or  t.co_atc  Like  'H02%' )  And  t.data_open  > Today()-365 )
Order By   1 , 2 , 3 , 4 


Saluti ,  Sergio

Cervino
Membro Junior
Membro Junior

Messaggi : 219
Punti : 2960
Voti per importanza dei messaggi : 16
Data d'iscrizione : 03.03.11
Età : 63
Località : Orzivecchi (BS)

Visualizza il profilo

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  Cervino il Dom 8 Giu 2014 - 0:21

GiampiMaz ha scritto:Ciao Sergio

come sai millewin ha una certa ridondanza di tabelle e modi diversi di accedere ai dati.
Ho provato varie soluzioni (non avendo postgres utilizzo la normale sintassi, e ho tolto And t.Ur_Pb_Id = b.Pb_code che è ininfluente per il problema)
questi 3 modi danno risultato uguale a quello che penso ottenga tu in postgres


(Select list (distinct g.Estesa) FROM mn_v_tbl_generica g, cart_terap t WHERE t.codice=p.codice and g.codice=t.co_atc AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_attivo,

(Select list (distinct g.descrizione) FROM mn_v_tbl_generica g, cart_terap t WHERE t.codice=p.codice and g.codice=t.co_atc AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_2,


(Select list (distinct g.atc_des) FROM tab_atc g, cart_terap t WHERE t.codice=p.codice and g.atc_cod=t.co_atc AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_3

se invece uso 

(Select list (distinct g.Estesa) FROM mn_v_tbl_generica g, cart_terap t WHERE t.codice=p.codice and g.codice=t.te_attivo AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_attivo_4

o

(Select list (distinct g.descrizione) FROM mn_v_tbl_generica g, cart_terap t WHERE t.codice=p.codice and g.codice=t.te_attivo AND (co_atc like 'N02%' OR co_atc like 'M01%' OR co_atc like 'H02%') AND t.data_open > Today()-365) principio_attivo_5


il risultato è leggermente diverso e il principio attivo descritto non è più ad esempio DICLOFENAC ma DICLOFENAC SODICO. 

per spiegarmi la tabella MN_V_TBL_GENERICA  è la stessa, il campo g.DESCRIZIONE (o g.ESTESA) è lo stesso ma l'interfaccio con t.te_attivo e non t.co_atc.

Non so se era questo il risultato che volevi, altrimenti si possono esplorare altre tabelle (es MN_V_PRODOTTI).
Se ti sono stato utile potresti darci qualche chiarimento sull'uso di postgres rispetto al normale sql di mille? Embarassed 
giampiero
 Ciao Giampiero ,     grazie per i suggerimenti :  nella tabella  mn_v_tbl_generica sono presenti due denominazioni fra le varie classificazioni di farmaci disponibili :   ACT ed ATTIVI , dovrebbe mancare invece quella secondo CODIFA ( in quanto nella cart_accert  , per ogni farmaco prescritto, sono presenti 3 codici :  ATC - ATTIVO - CODIFA ; sono inoltre presenti due campi pressochè identici ( intercambialibili ? ) x il link al Problema :  Pb_Code e Ur_Pb_Id ) .
 Probabilmente la denominazione dei principiti Attivi, nelle 3 classificazioni, differisce di poco : quanto al mio problema di estrarre in forma sintetica il principio attivo, per i farmaci a monocomposizione di solito è preferibile la denominazione ATC, per i multicomposti quella ATTIVI; in pratica non vi è una soluzione ottimale e quindi non riesco a semplificare la compilazione di vari moduli ( CIRS , .... ) .
  Quanto a PostgreSQL finora ho compreso molto poco : comunque nel passaggio il Mille.db viene convertito in MillePS ed in ambiente Windows viene installato un nuovo Utente ( PostGres ) che all' avvio di Windows lancia il Server,  a cui poi si collega il client Millewin : trattasi di sistema complesso ( forse troppo per un singolo utente almeno ) e non ottimale in Windows ; nell' uso quotidiano le differenze sono marginali : non trascurabile la ritardata apertura di alcune finestre : Anagrafica in primis di alcuni secondi , riscrittura delle query che comunque vengono eseguite molto velocemente, se correttamente impostate ( meno di un minuto x estrarre migliaia di righe e fino a 100 colonne con Tools appositi ( tipo pgAdmin III ) e lievemente piu' lente in MU ( ~ 20 - 30 % ) : rispetto a MilleAir le differenze sono abissali , meno con MillePG )  .
 Un problema potrebbe essere rappresentato dagli aggiornamenti piu' frequenti quelli di Postgres rispetto a MW : dovrei passare da 9.0 a 9.3 ma non ho ancora affrontato la questione .
 Un saluto e grazie ancora ,  Sergio

Cervino
Membro Junior
Membro Junior

Messaggi : 219
Punti : 2960
Voti per importanza dei messaggi : 16
Data d'iscrizione : 03.03.11
Età : 63
Località : Orzivecchi (BS)

Visualizza il profilo

Torna in alto Andare in basso

Re: lombalgia ricerca

Messaggio  Contenuto sponsorizzato


Contenuto sponsorizzato


Torna in alto Andare in basso

Torna in alto

- Argomenti simili

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