lombalgia ricerca
5 partecipanti
Pagina 1 di 1
lombalgia ricerca
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
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
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: lombalgia ricerca
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
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: lombalgia ricerca
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
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
Re: lombalgia ricerca
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.
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: lombalgia ricerca
AND ___eta___ between 0 and 50 /* <<Selezionare la fascia di eta */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.
Mario
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
Re: lombalgia ricerca
grazie mille.Lucio Mignone ha scritto:AND ___eta___ between 0 and 50 /* <<Selezionare la fascia di eta */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.
Mario
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
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'?
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: lombalgia ricerca
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à.
Re: lombalgia ricerca
Quello che hai indicato in rosso serve appunto a restringere la data delle terapie all'ultimo anno.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.
Mario
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
Re: lombalgia ricerca
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
grazie
Mario
P.S. c'e' Admin
Ultima modifica di mario shirt il Dom 18 Mag 2014 - 23:14 - modificato 1 volta.
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: lombalgia ricerca
Admin ha scritto:Quello che hai indicato in rosso serve appunto a restringere la data delle terapie all'ultimo anno.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.
Mario
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 grazie ora posso fare piccole modifiche x adattare all'audit
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: lombalgia ricerca
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
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: lombalgia ricerca
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
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
- Messaggi : 245
Punti : 5281
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: lombalgia ricerca
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?
giampiero
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?
giampiero
GiampiMaz- Membro Junior
- Messaggi : 122
Punti : 5187
Voti per importanza dei messaggi : 33
Data d'iscrizione : 20.02.11
Re: lombalgia ricerca
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
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: lombalgia ricerca
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
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
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: lombalgia ricerca
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 )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
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
- Messaggi : 245
Punti : 5281
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: lombalgia ricerca
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 ) .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?
giampiero
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
- Messaggi : 245
Punti : 5281
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Argomenti simili
» ricerca farmaco prescritto
» Ricerca Medico per Codice
» Ricerca esami per codice
» ricerca certificato malattia
» ricerca accertamenti per stringa
» Ricerca Medico per Codice
» Ricerca esami per codice
» ricerca certificato malattia
» ricerca accertamenti per stringa
Pagina 1 di 1
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.