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

Query complessa

Pagina 2 di 3 Precedente  1, 2, 3  Seguente

Andare in basso

Re: Query complessa

Messaggio  GiampiMaz il Dom 15 Apr 2012 - 10:08

Mi inserisco con ritardo nella discussione (ahhh le vacanze pasquali...)
la differenza tra i valori delle due query può essere spiegata dall'uso di t.userid like....

(Select ' 08-DM con Statine 2011' As Esame, Count( Distinct t.codice) From cart_pazpbl b Left Outer Join cart_terap t On b.codice = t.codice Left Outer Join pazienti p ON b.codice=p.codice
Where b.cp_code Like '250%' AND Years(p.nascita, Today())>16
And t.co_atc Like 'C10AA%' And Year( t.data_open) = 2011 AND t.Userid like '%')

hai la segretaria che ti fa le ricette? hai un sostituto? in questi casi i dati NON vengono estratti poichè userid è il codice di chi scrive la ricetta e non del titolare del paziente.

comunque è sempre un piacere vedere sviluppare query, bravissimi
giampiero
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo

Torna in alto Andare in basso

Re: Query complessa

Messaggio  Admin il Dom 15 Apr 2012 - 10:27

Cervino ha scritto:
drtulino ha scritto:Grazie Giuseppe. Questa mi estrae sia i dati Alcool che Attività fisica, ma per quanto riguarda gli Ace inibitori e le Statine i valori sono abbastanza differenti da quelli che estraggo con la query di Sergio e che invece sono abbastanza simili con quelli che incrocio con l'estrazione da Centrale Statistica per farmaci. Non capisco il perchè, considerato che a prima vista le impostazioni sono simili, ma Voi ci avete insegnato che una piccola impostazione della query può fare grandi differenze.

Condivido : le due query hanno una piccola ( ma a quanto pare non trascurabile ) differenza in :

< Count ( t.codice) > // < Count ( p.codice) > ;

analizzare un numero minore di Tabelle non è sempre vantaggioso : la tabella < Pazienti > nel Mille.db è il perno centrale di un complesso database relazionale e per questo ho utilizzato < Count ( p.codice) > ; sarà la soluzione ottimale ? : a volte si , a volte no , altre volte … forse

Saluti , Sergio

In realtà il problema non credo che sia questo perché il codice paziente è univoco qualunque tabella si consideri, il problema invece si pone riguardo all' USERID in quanto in praticamente tutte le tabelle vi sono colonne in cui spaventosamente non compare alcun userid oppure compare un codice diverso da quello effettivo e ciò falsa, e non di poco, le estrazioni nei database di medicine di gruppo. Questo si che è un grosso problema, che non si pone per database di medici singoli.

Inoltre se provate la seguente query:

Select '06-DM con Ace+Sartani 2011' As Esame, p.cognome+' '+p.nome Nome, t.codice, t .co_des Farmaco, Cast(sum(t.Te_NPezzi) as integer) Pezzi, Count (distinct t.codice) N_Pazienti
From cart_pazpbl b, cart_terap t, pazienti p
WHERE b.codice = t.codice AND b.codice=p.codice And p.pa_convenzione = 'S'
AND b.cp_code Like '250%' AND Years(p.nascita, Today())>16 AND t.stampato ='1'
And t.co_Atc Like 'C09%' And Year( t.data_open) = 2011 AND t.userid like '%'
GROUP BY t.co_des, t.userid, t.Te_NPezzi, t.codice, p.cognome,p.nome
ORDER BY 2


Vedrete che apparentemente il numero dei pazienti sembra molto più alto di quello effettivo (visualizzando "Lista pazienti") perché per lo stesso paziente nell'arco dell'anno si sono fatte prescrizioni di farmaci diversi anche se con stesso Atc e persino, in modo inspiegabile, lo stesso farmaco per lo stesso paziente viene messo su righe diverse.

_________________
L'Amministratore
Giuseppe Blasio
avatar
Admin
Admin
Admin

Messaggi : 521
Punti : 3446
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: Query complessa

Messaggio  drtulino il Dom 15 Apr 2012 - 10:39

GiampiMaz ha scritto:Mi inserisco con ritardo nella discussione (ahhh le vacanze pasquali...)
la differenza tra i valori delle due query può essere spiegata dall'uso di t.userid like....

(Select ' 08-DM con Statine 2011' As Esame, Count( Distinct t.codice) From cart_pazpbl b Left Outer Join cart_terap t On b.codice = t.codice Left Outer Join pazienti p ON b.codice=p.codice
Where b.cp_code Like '250%' AND Years(p.nascita, Today())>16
And t.co_atc Like 'C10AA%' And Year( t.data_open) = 2011 AND t.Userid like '%')

hai la segretaria che ti fa le ricette? hai un sostituto? in questi casi i dati NON vengono estratti poichè userid è il codice di chi scrive la ricetta e non del titolare del paziente.

comunque è sempre un piacere vedere sviluppare query, bravissimi
giampiero

E' vero, molte prescrizioni ripetitive passano dalla Segretaria. Allora non è possibile mettere il titolare del paziente? Ho visto la diversa impostazione data da Sergio e devo dire che si avvicina di più all'estrazione fatta per altre vie attraverso MilleUtilità.

_________________
Renato Tulino
MMG Monte Argentario (GR)
Facebook Millewin: https://www.facebook.com/groups/utentimillewin/
Twitter: @RenatoTulino
avatar
drtulino
Moderatore
Moderatore

Messaggi : 1808
Punti : 4972
Voti per importanza dei messaggi : 91
Data d'iscrizione : 20.02.11
Età : 54
Località : Monte Argentario (GR)

Visualizza il profilo https://www.facebook.com/groups/utentimillewin/

Torna in alto Andare in basso

Re: Query complessa

Messaggio  Cervino il Dom 15 Apr 2012 - 11:05

GiampiMaz ha scritto:Mi inserisco con ritardo nella discussione (ahhh le vacanze pasquali...)
la differenza tra i valori delle due query può essere spiegata dall'uso di t.userid like....

(Select ' 08-DM con Statine 2011' As Esame, Count( Distinct t.codice) From cart_pazpbl b Left Outer Join cart_terap t On b.codice = t.codice Left Outer Join pazienti p ON b.codice=p.codice
Where b.cp_code Like '250%' AND Years(p.nascita, Today())>16
And t.co_atc Like 'C10AA%' And Year( t.data_open) = 2011 AND t.Userid like '%')

hai la segretaria che ti fa le ricette? hai un sostituto? in questi casi i dati NON vengono estratti poichè userid è il codice di chi scrive la ricetta e non del titolare del paziente.

comunque è sempre un piacere vedere sviluppare query, bravissimi
giampiero

Grazie Giampiero per il suggerimento , purtroppo non ho una segretaria ; comunque nel mio mille.db con un solo utente ( a parte l' Amministratore di Sistema), nella tabella pazienti sono presenti due userid : capire quando i Programmatori abbiano effettuato il cambio non è facile in quanto fino al Maggio 2007 < p.data_open > è attribuita indifferentemente ad uno dei due userid; di conseguenza preferisco tenerne conto nell' impostare le query, anche se in questo caso non sembrerebbe rilevante in quanto l' anno analizzato è il 2011.

Ciao , Sergio

Cervino
Membro Junior
Membro Junior

Messaggi : 221
Punti : 3025
Voti per importanza dei messaggi : 16
Data d'iscrizione : 03.03.11
Età : 64
Località : Orzivecchi (BS)

Visualizza il profilo

Torna in alto Andare in basso

Re: Query complessa

Messaggio  Cervino il Dom 15 Apr 2012 - 11:25

drtulino ha scritto:E' vero, molte prescrizioni ripetitive passano dalla Segretaria. Allora non è possibile mettere il titolare del paziente? Ho visto la diversa impostazione data da Sergio e devo dire che si avvicina di più all'estrazione fatta per altre vie attraverso MilleUtilità.

Questo è il nodo cruciale in un Mille.db MultiUtente : ma purtroppo la Tabella Users è blindata dai Programmatori ; l' unico artifizio che sono per ora riuscito ad utilizzare per aggirare l' ostacolo è il ricorso alla vista < v_Utenti > : per cui di default, una query generale e flessibile potrebbe avere la struttura :

Select ..., ..., ... From ((( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join v_utenti u On u.userid = n.pa_medi ) ...

Comunque idee alternative o migliori … sono auspicabili .

Ciao, Sergio

Cervino
Membro Junior
Membro Junior

Messaggi : 221
Punti : 3025
Voti per importanza dei messaggi : 16
Data d'iscrizione : 03.03.11
Età : 64
Località : Orzivecchi (BS)

Visualizza il profilo

Torna in alto Andare in basso

Re: Query complessa

Messaggio  Admin il Dom 15 Apr 2012 - 11:29

Vedo con piacere il ritorno di Gianpiero che concorda con me sull'uso dell' USERID, ma credo che anche l'uso di Pa_medi della tabella nos_002 non risolva il problema e se è così, c'è un metodo risolutivo?

In ogni caso chiedo a Renato di confrontare anche la seguente query per vedere se almeno corrisponde a quella di Sergio:

(Select ' 01-Alcool 2011' As Esame, Count( Distinct a.codice) As N_pazienti From cart_accert a, nos_002 n Where a.codice=n.codice AND a.ac_Code Like '2904' And a.ac_val Is Not Null And Year( a.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 02-Attivita Fisica 2011' As Esame, Count( Distinct a.codice) From cart_accert a, nos_002 n
Where a.codice=n.codice AND a.ac_Code Like '2835' And a.ac_val Is Not Null And Year( a.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 03-Body Mass Index 2011' As Esame, Count( Distinct a.codice) From cart_accert a, nos_002 n Where a.codice=n.codice AND a.ac_Code Like '2609' And a.ac_val Is Not Null And Year( a.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 04-Circonferenza Vita 2011' As Esame, Count( Distinct a.codice) From cart_accert a, nos_002 n Where a.codice=n.codice AND a.ac_Code Like '3560' And a.ac_val Is Not Null And Year( a.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 05-Fumo 2011' As Esame, Count( Distinct a.codice) From cart_accert a, nos_002 n
Where a.codice=n.codice AND a.ac_Code Like '2832' And a.ac_val Is Not Null And Year( a.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 06-DM con Ace+Sartani 2011' As Esame, Count( Distinct t.codice) From cart_pazpbl b Join cart_terap t On b.codice = t.codice Left Outer Join pazienti p ON b.codice=p.codice Left Outer Join nos_002 n ON b.codice=n.codice Where b.cp_code Like '250%' AND Years(p.nascita, Today())>16
And t.co_Atc Like 'C09%' And Year( t.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 07-DM con ASA 2011' As Esame, Count( Distinct t.codice) From cart_pazpbl b Left Outer Join cart_terap t On b.codice = t.codice Left Outer Join pazienti p ON b.codice=p.codice Left Outer Join nos_002 n ON b.codice=n.codice Where b.cp_code Like '250%' AND Years(p.nascita, Today())>16 And t.co_atc Like 'B01AC06' And Year( t.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 08-DM con Statine 2011' As Esame, Count( Distinct t.codice) From cart_pazpbl b Left Outer Join cart_terap t On b.codice = t.codice Left Outer Join pazienti p ON b.codice=p.codice Left Outer Join nos_002 n ON b.codice=n.codice Where b.cp_code Like '250%' AND Years(p.nascita, Today())>16 And t.co_atc Like 'C10AA%' And YEARS(t.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 09-DM con Creatinina 2011' As Esame, Count( Distinct b.codice) As pazienti From cart_pazpbl b Left Outer Join cart_accert a On b.codice = a.codice Left Outer Join pazienti p ON b.codice=p.codice Left Outer Join nos_002 n ON b.codice=n.codice Where b.cp_code Like '250%' AND Years(p.nascita, Today())>16 And a.ac_nt_code IN ('90.16.4' , '90.16.3') And Year( a.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 10-DM con Glicata 2011' As Esame, Count( Distinct b.codice) As pazienti From cart_pazpbl b Left Outer Join cart_accert a On b.codice = a.codice Left Outer Join pazienti p ON b.codice=p.codice Left Outer Join nos_002 n ON b.codice=n.codice Where b.cp_code Like '250%' AND Years(p.nascita, Today())>16 And a.ac_nt_code IN ('90.28.1') And Year( a.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 11-DM con Microalbuminuria 2011' As Esame, Count( Distinct b.codice) As pazienti From cart_pazpbl b Left Outer Join cart_accert a On b.codice = a.codice Left Outer Join pazienti p ON b.codice=p.codice Left Outer Join nos_002 n ON b.codice=n.codice Where b.cp_code Like '250%' AND Years(p.nascita, Today())>16 And a.ac_nt_code IN ('90.33.4') And Year( a.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 12-DM con Colesterolo 2011' As Esame, Count( Distinct b.codice) As pazienti From cart_pazpbl b Left Outer Join cart_accert a On b.codice = a.codice Left Outer Join pazienti p ON b.codice=p.codice Left Outer Join nos_002 n ON b.codice=n.codice Where b.cp_code Like '250%' AND Years(p.nascita, Today())>16 And a.ac_nt_code IN ('90.14.3') And Year( a.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 13-DM con HDL 2011' As Esame, Count( Distinct b.codice) As pazienti From cart_pazpbl b Left Outer Join cart_accert a On b.codice = a.codice Left Outer Join pazienti p ON b.codice=p.codice Left Outer Join nos_002 n ON b.codice=n.codice Where b.cp_code Like '250%' AND Years(p.nascita, Today())>16 And a.ac_nt_code IN ('90.14.1') And Year( a.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 14-M con Trigliceridi 2011' As Esame, Count( Distinct b.codice) As pazienti From cart_pazpbl b Left Outer Join cart_accert a On b.codice = a.codice Left Outer Join pazienti p ON b.codice=p.codice Left Outer Join nos_002 n ON b.codice=n.codice Where b.cp_code Like '250%' AND Years(p.nascita, Today())>16 And a.ac_nt_code IN ('90.43.2') And Year( a.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 15-BPCO con Spirometria 2011' As Esame, Count( Distinct b.codice) As pazienti From cart_pazpbl b Left Outer Join cart_accert a On b.codice = a.codice Left Outer Join nos_002 n ON b.codice=n.codice Where b.cp_code Like '496%' And a.ac_nt_code IN ( '89.37.1' , '89.37.2' ) And Year( a.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/
Union
(Select ' 16-BPCO con BroncoDilatatori 2011' As Esame, Count( Distinct b.codice) As pazienti From cart_pazpbl b Left Outer Join cart_terap t On b.codice = t.codice Left Outer Join nos_002 n ON b.codice=n.codice Where b.cp_code Like '496%' And ( t.co_atc Like 'R03AC%' Or t.co_atc Like 'R03AK%' ) And Year( t.data_open) = 2011 AND n.Pa_Medi like '%') /*inserire il codice di gruppo*/


ORDER BY 1

_________________
L'Amministratore
Giuseppe Blasio
avatar
Admin
Admin
Admin

Messaggi : 521
Punti : 3446
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: Query complessa

Messaggio  drtulino il Dom 15 Apr 2012 - 12:33

Admin ha scritto:Vedo con piacere il ritorno di Gianpiero che concorda con me sull'uso dell' USERID, ma credo che anche l'uso di Pa_medi della tabella nos_002 non risolva il problema e se è così, c'è un metodo risolutivo?

In ogni caso chiedo a Renato di confrontare anche la seguente query per vedere se almeno corrisponde a quella di Sergio:

In allegato il file cumulativo che confronta l'estrazione tra l'ultima query di Giuseppe e quella di Sergio. I risultati in questo caso, come si può vedere, sono identici. A Voi le conclusioni.
File allegati
estrazioni cumulative.XLS Non hai il permesso di scaricare i file.(14 kB) Scaricato 6 volte

_________________
Renato Tulino
MMG Monte Argentario (GR)
Facebook Millewin: https://www.facebook.com/groups/utentimillewin/
Twitter: @RenatoTulino
avatar
drtulino
Moderatore
Moderatore

Messaggi : 1808
Punti : 4972
Voti per importanza dei messaggi : 91
Data d'iscrizione : 20.02.11
Età : 54
Località : Monte Argentario (GR)

Visualizza il profilo https://www.facebook.com/groups/utentimillewin/

Torna in alto Andare in basso

Re: Query complessa

Messaggio  drtulino il Dom 15 Apr 2012 - 12:49

Admin ha scritto:
In realtà il problema non credo che sia questo perché il codice paziente è univoco qualunque tabella si consideri, il problema invece si pone riguardo all' USERID in quanto in praticamente tutte le tabelle vi sono colonne in cui spaventosamente non compare alcun userid oppure compare un codice diverso da quello effettivo e ciò falsa, e non di poco, le estrazioni nei database di medicine di gruppo. Questo si che è un grosso problema, che non si pone per database di medici singoli.
Inoltre se provate la seguente query:

Select '06-DM con Ace+Sartani 2011' As Esame, p.cognome+' '+p.nome Nome, t.codice, t .co_des Farmaco, Cast(sum(t.Te_NPezzi) as integer) Pezzi, Count (distinct t.codice) N_Pazienti
From cart_pazpbl b, cart_terap t, pazienti p
WHERE b.codice = t.codice AND b.codice=p.codice And p.pa_convenzione = 'S'
AND b.cp_code Like '250%' AND Years(p.nascita, Today())>16 AND t.stampato ='1'
And t.co_Atc Like 'C09%' And Year( t.data_open) = 2011 AND t.userid like '%'
GROUP BY t.co_des, t.userid, t.Te_NPezzi, t.codice, p.cognome,p.nome
ORDER BY 2


Vedrete che apparentemente il numero dei pazienti sembra molto più alto di quello effettivo (visualizzando "Lista pazienti") perché per lo stesso paziente nell'arco dell'anno si sono fatte prescrizioni di farmaci diversi anche se con stesso Atc e persino, in modo inspiegabile, lo stesso farmaco per lo stesso paziente viene messo su righe diverse.

Confermo!!!

Le strisce colorate identificano gli stessi pazienti.
File allegati
Blasio prova.XLS Non hai il permesso di scaricare i file.(17 kB) Scaricato 4 volte

_________________
Renato Tulino
MMG Monte Argentario (GR)
Facebook Millewin: https://www.facebook.com/groups/utentimillewin/
Twitter: @RenatoTulino
avatar
drtulino
Moderatore
Moderatore

Messaggi : 1808
Punti : 4972
Voti per importanza dei messaggi : 91
Data d'iscrizione : 20.02.11
Età : 54
Località : Monte Argentario (GR)

Visualizza il profilo https://www.facebook.com/groups/utentimillewin/

Torna in alto Andare in basso

Re: Query complessa

Messaggio  Admin il Dom 15 Apr 2012 - 12:54

drtulino ha scritto:
Admin ha scritto:Vedo con piacere il ritorno di Gianpiero che concorda con me sull'uso dell' USERID, ma credo che anche l'uso di Pa_medi della tabella nos_002 non risolva il problema e se è così, c'è un metodo risolutivo?

In ogni caso chiedo a Renato di confrontare anche la seguente query per vedere se almeno corrisponde a quella di Sergio:

In allegato il file cumulativo che confronta l'estrazione tra l'ultima query di Giuseppe e quella di Sergio. I risultati in questo caso, come si può vedere, sono identici. A Voi le conclusioni.

CONSIDERAZIONI

Nelle postazioni multiutenti le estrazioni vanno fatte utilizzando Pa_Medi della tabella nos_002 in quanto fa riferimento al titolare del paziente e non all'utente prescrittore, che potrebbe essere un sostituto o la segretaria.

La vista V_Utenti serve solo a correlare eventualmente il nome del titolare al codice utente ma non aggiunge niente a quanto detto sopra.

Anche usando questi accorgimenti, sfugge comunque qualcosa ?

L'uso delle viste invece delle cartelle, pone meno problemi ?

CONCLUSIONE

Il dott. Tulino ha una segretaria o un sostituto che prescrive molti più sartani e statine di lui.

_________________
L'Amministratore
Giuseppe Blasio
avatar
Admin
Admin
Admin

Messaggi : 521
Punti : 3446
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: Query complessa

Messaggio  drtulino il Dom 15 Apr 2012 - 13:57

Admin ha scritto:
CONCLUSIONE

Il dott. Tulino ha una segretaria o un sostituto che prescrive molti più sartani e statine di lui.

La conclusione di Giuseppe nel mio caso è correttissima. Infatti in questo tipo di pazienti, come per tutti i pazienti cronici, le terapie ripetitive (e queste, quando va tutto bene, lo devono essere) passano dalla postazione della Segretaria.

_________________
Renato Tulino
MMG Monte Argentario (GR)
Facebook Millewin: https://www.facebook.com/groups/utentimillewin/
Twitter: @RenatoTulino
avatar
drtulino
Moderatore
Moderatore

Messaggi : 1808
Punti : 4972
Voti per importanza dei messaggi : 91
Data d'iscrizione : 20.02.11
Età : 54
Località : Monte Argentario (GR)

Visualizza il profilo https://www.facebook.com/groups/utentimillewin/

Torna in alto Andare in basso

Re: Query complessa

Messaggio  GiampiMaz il Dom 15 Apr 2012 - 16:11

Cercando di fare un riassunto delle conclusioni:
userid è chi scrive la ricetta al nostro paziente (segretaria o sostituto o titolare o altro medico del gruppo), quindi anche chi non ha segretaria ed è singolo presenterà userid diversi (andrà pur in ferie qualche volta... a meno che non dia al sostituto la propria password da usare)
usando le tabelle occorre utilizzare pa_medi da nos_002 (come si fa da tempo) per identificare tutte le prescrizioni ai propri pazienti
usando le viste ciò è fatto in automatico dalla centrale statistiche

un'alternativa è mischiare tabelle e viste, si evita di dover inserire i codici personali, ciò è utile in query particolarmente complesse (come quella sopra) o se si vuole dare la query a colleghi non proprio esperti che poi dovrebbero metterci le mani.
Esempio, rifacendosi al mio post precedente:

Select ' 08-DM con Statine 2011' As Esame, Count( Distinct t.codice) From V_pazienti paz, cart_pazpbl b Left Outer Join cart_terap t On b.codice = t.codice Left Outer Join pazienti p ON b.codice=p.codice
Where p.codice=paz.codice and

b.cp_code Like '250%' AND Years(p.nascita, Today())>16
And t.co_atc Like 'C10AA%' And Year( t.data_open) = 2011

in questo modo non è necessario riferirsi alla tabella nos_002, ma da centrale statistiche occorrerà mettere la spunta sui pazienti usl attivi (o altro se si vuole revocati, speciali ecc)
ATTENZIONE: così si selezionano i propri pazienti convenzionati viventi ed iscritti al momento della query, per la tabella non basta il solo pa_medi ='%' ma anche AND (pa_drevoca IS NULL or pa_drevoca >TODAY()) AND (p.decesso IS NULL).
Mescolare viste e tabelle non è che mi piaccia, ho sempre il dubbio di non avere il controllo della query, ma penso che funzioni.
Un saluto a tutti
giampiero
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo

Torna in alto Andare in basso

Re: Query complessa

Messaggio  drtulino il Dom 15 Apr 2012 - 17:03

GiampiMaz ha scritto:un'alternativa è mischiare tabelle e viste, si evita di dover inserire i codici personali, ciò è utile in query particolarmente complesse (come quella sopra) o se si vuole dare la query a colleghi non proprio esperti che poi dovrebbero metterci le mani.

Condivido queste perplessità. Il motivo, infatti, di questa query sarà quello di proporre un audit ai 200 MMG della mia ASL ed il fatto di dover loro far mettere le mani per inserire i codici per chi lavora in gruppo mi crea un po' di angoscia.

Detto questo, però, non ho ben capito (perchè sono "tosto") come intenderesti modificare le molto performanti query di Sergio e Giuseppe, soprattutto nella sua parte finale e cioè quella riguardante i pazienti revocati o per lo meno non più attivi.

_________________
Renato Tulino
MMG Monte Argentario (GR)
Facebook Millewin: https://www.facebook.com/groups/utentimillewin/
Twitter: @RenatoTulino
avatar
drtulino
Moderatore
Moderatore

Messaggi : 1808
Punti : 4972
Voti per importanza dei messaggi : 91
Data d'iscrizione : 20.02.11
Età : 54
Località : Monte Argentario (GR)

Visualizza il profilo https://www.facebook.com/groups/utentimillewin/

Torna in alto Andare in basso

Re: Query complessa

Messaggio  GiampiMaz il Dom 15 Apr 2012 - 18:43

Modifico intanto quella di Sergio (con cui mi scuso per avergliela manipolata, se ho fatto errori lo prego di correggermi), come vedi ho introdotto la vista V_pazienti e l'ho collegata (paz.codice=p.codice). In questo modo la query agisce sui pazienti che vengono preselezionati da centrale statistiche (almeno credo), per cui in centrale statistiche occorrerà spuntare pazienti usl e mettere a destra periodo (fine 2011 in questo caso), incerto se occorre toglier la spunta su esclusi revocati nel periodo (penso di sì). Così sostanzialmente i risultati dovrebbero essere sovrapponibili a quelli della query originale di Sergio, senza grossi problemi per i meno esperti (certo che gli imbranati riescono sempre ad incasinare tutto, sono molto ingegnosi...).
Prova a confrontare i risultati poi sappi dire
giampiero


(Select ' Alcool 2011' As Esame, Count( Distinct a.codice) As pazienti From V_pazienti paz, pazienti p Left Outer Join nos_002 n On p.codice = n.codice Left Outer Join cart_accert a On p.codice = a.codice Where paz.codice=p.codice And a.ac_des Like 'Alcool' And a.ac_val Is Not Null And Year( a.data_open) = 2011 And p.pa_convenzione = 'S' )
Union
(Select ' Attivita Fisica 2011' As Esame, Count( Distinct a.codice) From V_pazienti paz, pazienti p Left Outer Join nos_002 n On p.codice = n.codice Left Outer Join cart_accert a On p.codice = a.codice Where paz.codice=p.codice And a.ac_des Like 'Attiv%Fisica' And a.ac_val Is Not Null And Year( a.data_open) = 2011 And p.pa_convenzione = 'S' )
Union
(Select ' Body Mass Index 2011' As Esame, Count( Distinct a.codice) From V_pazienti paz, pazienti p Left Outer Join nos_002 n On p.codice = n.codice Left Outer Join cart_accert a On p.codice = a.codice Where paz.codice=p.codice And a.ac_des Like '%BMI%' And a.ac_val Is Not Null And Year( a.data_open) = 2011 And p.pa_convenzione = 'S' )
Union
(Select ' Circonferenza Vita 2011' As Esame, Count( Distinct a.codice) From V_pazienti paz, pazienti p Left Outer Join nos_002 n On p.codice = n.codice Left Outer Join cart_accert a On p.codice = a.codice Where paz.codice=p.codice And a.ac_des Like 'Circonf%Vita' And a.ac_val Is Not Null And Year( a.data_open) = 2011 And p.pa_convenzione = 'S' )
Union
(Select ' Fumo 2011' As Esame, Count( Distinct a.codice) From V_pazienti paz, pazienti p Left Outer Join nos_002 n On p.codice = n.codice Left Outer Join cart_accert a On p.codice = a.codice Where paz.codice=p.codice And a.ac_des Like 'Fumo' And a.ac_val Is Not Null And Year( a.data_open) = 2011 And p.pa_convenzione = 'S' )
Union
(Select ' DM con Ace_Inibitori 2011' As Esame, Count( Distinct p.codice) From V_pazienti paz, (( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_terap t On p.codice = t.codice Where paz.codice=p.codice And b.cp_code Like '250%' And t.co_atc Like 'C09%' And Year( t.data_open) = 2011 And (DateDiff ( hh, nascita, '2011-12-31')/8766) >16 And p.pa_convenzione = 'S' )
Union
(Select ' DM con ASA 2011' As Esame, Count( Distinct t.codice) From V_pazienti paz, (( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_terap t On p.codice = t.codice Where paz.codice=p.codice And b.cp_code Like '250%' And t.co_atc Like 'B01AC06' And Year( t.data_open) = 2011 And (DateDiff ( hh, nascita, '2011-12-31')/8766) >16 And p.pa_convenzione = 'S' )
Union
(Select ' DM con Statine 2011' As Esame, Count( Distinct t.codice) From V_pazienti paz, (( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_terap t On p.codice = t.codice Where paz.codice=p.codice And b.cp_code Like '250%' And t.co_atc Like 'C10AA%' And Year( t.data_open) = 2011 And (DateDiff ( hh, nascita, '2011-12-31')/8766) >16 And p.pa_convenzione = 'S' )
Union
(Select ' DM con EEC 2011' As Esame, Count( Distinct b.codice) As pazienti From V_pazienti paz, (( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_accert a On p.codice = a.codice Where paz.codice=p.codice And b.cp_code Like '250%' And a.ac_nt_code IN ('90.16.4' , '90.16.3' ,'90.28.1','90.33.4', '90.14.3', '90.14.1' , '90.43.2') And Year( a.data_open) = 2011 And (DateDiff ( hh, nascita, '2011-12-31')/8766) >16 And p.pa_convenzione = 'S' )
Union
(Select ' BPCO con Spirometria 2011' As Esame, Count( Distinct b.codice) As pazienti From V_pazienti paz, (( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_accert a On p.codice = a.codice Where paz.codice=p.codice And b.cp_code Like '496%' And a.ac_nt_code IN ( '89.37.1' , '89.37.2' ) And Year( a.data_open) = 2011 And p.pa_convenzione = 'S' )
Union
(Select ' BPCO con BroncoDilatatori 2011' As Esame, Count( Distinct b.codice) As pazienti From V_pazienti paz, (( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_terap t On p.codice = t.codice Where paz.codice=p.codice And b.cp_code Like '496%' And ( t.co_atc Like 'R03AC%' Or t.co_atc Like 'R03AK%' ) And Year( t.data_open) = 2011 And p.pa_convenzione = 'S' )
Order By 1
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo

Torna in alto Andare in basso

Re: Query complessa

Messaggio  drtulino il Dom 15 Apr 2012 - 19:23

GiampiMaz ha scritto:Modifico intanto quella di Sergio (con cui mi scuso per avergliela manipolata, se ho fatto errori lo prego di correggermi), come vedi ho introdotto la vista V_pazienti e l'ho collegata (paz.codice=p.codice). In questo modo la query agisce sui pazienti che vengono preselezionati da centrale statistiche (almeno credo), per cui in centrale statistiche occorrerà spuntare pazienti usl e mettere a destra periodo (fine 2011 in questo caso), incerto se occorre toglier la spunta su esclusi revocati nel periodo (penso di sì). Così sostanzialmente i risultati dovrebbero essere sovrapponibili a quelli della query originale di Sergio, senza grossi problemi per i meno esperti (certo che gli imbranati riescono sempre ad incasinare tutto, sono molto ingegnosi...).
Prova a confrontare i risultati poi sappi dire
giampiero

Leggendo l'allegato, direi che le differenze sono minime e lascio a Voi il compito di scoprire il perchè.
Nessun problema a fare l'estrazione da Centrale Statistiche. Basta impostare solo il periodo di estrazione senza dover modificare altro rispetto al default.
File allegati
estrazioni cumulative.XLS Non hai il permesso di scaricare i file.(14 kB) Scaricato 2 volte

_________________
Renato Tulino
MMG Monte Argentario (GR)
Facebook Millewin: https://www.facebook.com/groups/utentimillewin/
Twitter: @RenatoTulino
avatar
drtulino
Moderatore
Moderatore

Messaggi : 1808
Punti : 4972
Voti per importanza dei messaggi : 91
Data d'iscrizione : 20.02.11
Età : 54
Località : Monte Argentario (GR)

Visualizza il profilo https://www.facebook.com/groups/utentimillewin/

Torna in alto Andare in basso

Re: Query complessa

Messaggio  GiampiMaz il Dom 15 Apr 2012 - 19:37

Hai tolto la spunta in 'revocati deceduti nel periodo' ?
La differenza in meno usando V_pazienti potrebbe essere dovuta a quella.
giampiero
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo

Torna in alto Andare in basso

Re: Query complessa

Messaggio  GiampiMaz il Dom 15 Apr 2012 - 19:44

Mi spiego meglio, aperto un NUOVO mille utilità avviata la query
nella schermata principale di centrale statistiche spunta SSN attivi e a destra spunta nel periodo in cui metti 1/1/1900 31/12/2011
sotto togli la spunta a 'deceduti revocati nel periodo'
nella seconda schermata - periodo da esaminare - lascialo pure come è, è ininfluente
giampiero
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo

Torna in alto Andare in basso

Re: Query complessa

Messaggio  drtulino il Dom 15 Apr 2012 - 19:49

GiampiMaz ha scritto:Hai tolto la spunta in 'revocati deceduti nel periodo' ?
La differenza in meno usando V_pazienti potrebbe essere dovuta a quella.
giampiero

Hai ragione, infatti con questa nuova estrazione è costante la differenza di 1 unità in tutti parametri estratti. Ancora una volta a Voi l'ardua sentenza!!! Ma obiettivamente non penso sia importante.
File allegati
estrazioni cumulative.XLS Non hai il permesso di scaricare i file.(14 kB) Scaricato 2 volte

_________________
Renato Tulino
MMG Monte Argentario (GR)
Facebook Millewin: https://www.facebook.com/groups/utentimillewin/
Twitter: @RenatoTulino
avatar
drtulino
Moderatore
Moderatore

Messaggi : 1808
Punti : 4972
Voti per importanza dei messaggi : 91
Data d'iscrizione : 20.02.11
Età : 54
Località : Monte Argentario (GR)

Visualizza il profilo https://www.facebook.com/groups/utentimillewin/

Torna in alto Andare in basso

Re: Query complessa

Messaggio  drtulino il Dom 15 Apr 2012 - 20:21

Se può servire:

...ho leggermente modificato la query per estrarre i pazienti diabetici e nella query di Giampiero mi perdo un paziente rispetto a quelli estratti con le query di Giuseppe e Sergio.

_________________
Renato Tulino
MMG Monte Argentario (GR)
Facebook Millewin: https://www.facebook.com/groups/utentimillewin/
Twitter: @RenatoTulino
avatar
drtulino
Moderatore
Moderatore

Messaggi : 1808
Punti : 4972
Voti per importanza dei messaggi : 91
Data d'iscrizione : 20.02.11
Età : 54
Località : Monte Argentario (GR)

Visualizza il profilo https://www.facebook.com/groups/utentimillewin/

Torna in alto Andare in basso

Re: Query complessa

Messaggio  GiampiMaz il Dom 15 Apr 2012 - 21:19

Credo che al drammatico enigma del diabetico perduto possa rispondere (salvo altre risposte) solo tu.
Se hai pazienza e voglia prova le due query

Select distinct p.cognome, p.nome, p.nascita From ((( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join v_utenti u On u.userid = n.pa_medi ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_terap t On p.codice = t.codice Where u.cognome Like '%' And b.cp_code Like '250%' And t.co_atc Like 'C09%' And Year( t.data_open) = 2011 And (DateDiff ( hh, nascita, '2011-12-31')/8766) >16 And p.pa_convenzione = 'S'
order by 1

Select distinct p.cognome, p.nome, p.nascita From V_pazienti paz, (( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_terap t On p.codice = t.codice Where paz.codice=p.codice And b.cp_code Like '250%' And t.co_atc Like 'C09%' And Year( t.data_open) = 2011 And (DateDiff ( hh, nascita, '2011-12-31')/8766) >16 And p.pa_convenzione = 'S'
order by 1

avendo cura di mettere il tuo codice nella prima e di seguire le istruzioni che ho dato per la configurazione di centrale statistiche al primo avvio di milleutilità.

Confrontando i nomi nella seconda dovrebbe mancare il famoso diabetico nascosto. Quale è il suo segreto? forse una data di revoca, uno speciale? ...
mistero
(tutto questo per incuriosirti e spingerti alla rottura di confrontare gli elenchi ecc. ma il risultato potrebbe essere interessante. Very Happy )
giampiero
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo

Torna in alto Andare in basso

Re: Query complessa

Messaggio  GiampiMaz il Dom 15 Apr 2012 - 21:22

Lapsus nella prima devi mettere il tuo cognome.
gpp
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo

Torna in alto Andare in basso

Re: Query complessa

Messaggio  drtulino il Dom 15 Apr 2012 - 21:34

GiampiMaz ha scritto:Credo che al drammatico enigma del diabetico perduto possa rispondere (salvo altre risposte) solo tu.
Se hai pazienza e voglia prova le due query

Select distinct p.cognome, p.nome, p.nascita From ((( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join v_utenti u On u.userid = n.pa_medi ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_terap t On p.codice = t.codice Where u.cognome Like '%' And b.cp_code Like '250%' And t.co_atc Like 'C09%' And Year( t.data_open) = 2011 And (DateDiff ( hh, nascita, '2011-12-31')/8766) >16 And p.pa_convenzione = 'S'
order by 1

Select distinct p.cognome, p.nome, p.nascita From V_pazienti paz, (( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_terap t On p.codice = t.codice Where paz.codice=p.codice And b.cp_code Like '250%' And t.co_atc Like 'C09%' And Year( t.data_open) = 2011 And (DateDiff ( hh, nascita, '2011-12-31')/8766) >16 And p.pa_convenzione = 'S'
order by 1

avendo cura di mettere il tuo codice nella prima e di seguire le istruzioni che ho dato per la configurazione di centrale statistiche al primo avvio di milleutilità.

Confrontando i nomi nella seconda dovrebbe mancare il famoso diabetico nascosto. Quale è il suo segreto? forse una data di revoca, uno speciale? ...
mistero
(tutto questo per incuriosirti e spingerti alla rottura di confrontare gli elenchi ecc. ma il risultato potrebbe essere interessante. Very Happy )
giampiero

Ottengo lo stesso identico risultato con tutte e due le suddette query e cioè 52 pazienti, tanti quanti ne estraggo con la query più complessa per i pazienti diabeti in trattamento con ACE inibitori.

_________________
Renato Tulino
MMG Monte Argentario (GR)
Facebook Millewin: https://www.facebook.com/groups/utentimillewin/
Twitter: @RenatoTulino
avatar
drtulino
Moderatore
Moderatore

Messaggi : 1808
Punti : 4972
Voti per importanza dei messaggi : 91
Data d'iscrizione : 20.02.11
Età : 54
Località : Monte Argentario (GR)

Visualizza il profilo https://www.facebook.com/groups/utentimillewin/

Torna in alto Andare in basso

Re: Query complessa

Messaggio  GiampiMaz il Dom 15 Apr 2012 - 21:53

Stesse avvertenze di prima, dovresti ottenere 71 nomi dalla prima e 70 dalla seconda (forse).
gp

Select distinct p.cognome, p.nome, p.nascita From ((( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join v_utenti u On u.userid = n.pa_medi ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_accert a On p.codice = a.codice Where u.cognome Like '%' And b.cp_code Like '250%' And a.ac_nt_code IN ('90.16.4' , '90.16.3' ,'90.28.1','90.33.4', '90.14.3', '90.14.1' , '90.43.2') And Year( a.data_open) = 2011 And (DateDiff ( hh, nascita, '2011-12-31')/8766) >16 And p.pa_convenzione = 'S'
order by 1

Select distinct p.cognome, p.nome, p.nascita From V_pazienti paz, (( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_accert a On p.codice = a.codice Where paz.codice=p.codice And b.cp_code Like '250%' And a.ac_nt_code IN ('90.16.4' , '90.16.3' ,'90.28.1','90.33.4', '90.14.3', '90.14.1' , '90.43.2') And Year( a.data_open) = 2011 And (DateDiff ( hh, nascita, '2011-12-31')/8766) >16 And p.pa_convenzione = 'S'
order by 1
avatar
GiampiMaz
Membro Junior
Membro Junior

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

Visualizza il profilo

Torna in alto Andare in basso

Re: Query complessa

Messaggio  drtulino il Dom 15 Apr 2012 - 22:02

GiampiMaz ha scritto:Stesse avvertenze di prima, dovresti ottenere 71 nomi dalla prima e 70 dalla seconda (forse).
gp

Select distinct p.cognome, p.nome, p.nascita From ((( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join v_utenti u On u.userid = n.pa_medi ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_accert a On p.codice = a.codice Where u.cognome Like '%' And b.cp_code Like '250%' And a.ac_nt_code IN ('90.16.4' , '90.16.3' ,'90.28.1','90.33.4', '90.14.3', '90.14.1' , '90.43.2') And Year( a.data_open) = 2011 And (DateDiff ( hh, nascita, '2011-12-31')/8766) >16 And p.pa_convenzione = 'S'
order by 1

Select distinct p.cognome, p.nome, p.nascita From V_pazienti paz, (( pazienti p Left Outer Join nos_002 n On p.codice = n.codice ) Left Outer Join cart_pazpbl b On p.codice = b.codice ) Left Outer Join cart_accert a On p.codice = a.codice Where paz.codice=p.codice And b.cp_code Like '250%' And a.ac_nt_code IN ('90.16.4' , '90.16.3' ,'90.28.1','90.33.4', '90.14.3', '90.14.1' , '90.43.2') And Year( a.data_open) = 2011 And (DateDiff ( hh, nascita, '2011-12-31')/8766) >16 And p.pa_convenzione = 'S'
order by 1

Con la prima ne estraggo 77 e con la seconda 76. Quello che estraggo in più con la prima query ce l'ho in carico dal 01/02/2012, mentre gli esami, presi in considerazione dalla query, risalgono a degli esami che io ho trascritto dal suo storico, quando non era ancora mio paziente. Penso che l'arcano sia scoperto, anche perchè il paziente è anche diabetico con data 2012, mentre alcuni esami (dello storico) sono 2011.


Ultima modifica di drtulino il Dom 15 Apr 2012 - 22:27, modificato 1 volta

_________________
Renato Tulino
MMG Monte Argentario (GR)
Facebook Millewin: https://www.facebook.com/groups/utentimillewin/
Twitter: @RenatoTulino
avatar
drtulino
Moderatore
Moderatore

Messaggi : 1808
Punti : 4972
Voti per importanza dei messaggi : 91
Data d'iscrizione : 20.02.11
Età : 54
Località : Monte Argentario (GR)

Visualizza il profilo https://www.facebook.com/groups/utentimillewin/

Torna in alto Andare in basso

Re: Query complessa

Messaggio  Admin il Dom 15 Apr 2012 - 22:13

Con la seguente query ottengo risultati perfettamente identici a quelli con l'inserimento del codice personale:

(Select ' 01-Alcool 2011' As Esame, Count( Distinct a.codice) As N_pazienti From V_Pazienti p, cart_accert a Where p.codice=a.codice AND a.ac_Code Like '2904' And a.ac_val Is Not Null And Year( a.data_open) = 2011)
Union
(Select ' 02-Attivita Fisica 2011' As Esame, Count( Distinct a.codice) From V_Pazienti p, cart_accert a Where p.codice=a.codice AND a.ac_Code Like '2835' And a.ac_val Is Not Null And Year(a.data_open) = 2011)
Union
(Select ' 03-Body Mass Index 2011' As Esame, Count( Distinct a.codice) From V_Pazienti p, cart_accert a Where p.codice=a.codice AND a.ac_Code Like '2609' And a.ac_val Is Not Null And Year( a.data_open) = 2011)
Union
(Select ' 04-Circonferenza Vita 2011' As Esame, Count( Distinct a.codice) From V_Pazienti p, cart_accert a Where p.codice=a.codice AND a.ac_Code Like '3560' And a.ac_val Is Not Null And Year( a.data_open) = 2011)
Union
(Select ' 05-Fumo 2011' As Esame, Count( Distinct a.codice) From V_Pazienti p, cart_accert a
Where p.codice=a.codice AND a.ac_Code Like '2832' And a.ac_val Is Not Null And Year( a.data_open) = 2011)
Union
(Select ' 06-DM con Ace+Sartani 2011' As Esame, Count( Distinct t.codice) From V_Pazienti p, cart_pazpbl b, cart_terap t WHERE p.codice = b.codice AND p.codice=t.codice AND b.cp_code Like '250%' AND Years(p.datanasc, Today())>16 And t.co_Atc Like 'C09%' And Year( t.data_open) = 2011)
Union
(Select ' 07-DM con ASA 2011' As Esame, Count( Distinct t.codice) From V_Pazienti p, cart_pazpbl b, cart_terap t WHERE p.codice = b.codice AND p.codice=t.codice AND b.cp_code Like '250%' AND Years(p.datanasc, Today())>16 And t.co_atc Like 'B01AC06' And Year( t.data_open) = 2011)
Union
(Select ' 08-DM con Statine 2011' As Esame, Count( Distinct t.codice) From V_Pazienti p, cart_pazpbl b, cart_terap t WHERE p.codice =b.codice AND p.codice=t.codice AND b.cp_code Like '250%' AND Years(p.datanasc, Today())>16 And t.co_atc Like 'C10AA%' And YEARS(t.data_open) = 2011)
Union
(Select ' 09-DM con Creatinina 2011' As Esame, Count( Distinct b.codice) As pazienti From V_Pazienti p, cart_pazpbl b, cart_accert a Where p.codice=b.codice AND p.codice=a.codice AND b.cp_code Like '250%' AND Years(p.datanasc, Today())>16 And a.ac_nt_code IN ('90.16.4' , '90.16.3') And Year( a.data_open) = 2011)
Union
(Select ' 10-DM con Glicata 2011' As Esame, Count( Distinct b.codice) As pazienti From V_Pazienti p, cart_pazpbl b, cart_accert a WHERE p.codice = b.codice AND p.codice=a.codice AND b.cp_code Like '250%' AND Years(p.datanasc, Today())>16 And a.ac_nt_code IN ('90.28.1') And Year( a.data_open) = 2011)
Union
(Select ' 11-DM con Microalbuminuria 2011' As Esame, Count( Distinct b.codice) As pazienti From V_Pazienti p, cart_pazpbl b, cart_accert a WHERE p.codice = b.codice AND p.codice=a.codice AND b.cp_code Like '250%' AND Years(p.datanasc, Today())>16 And a.ac_nt_code IN ('90.33.4') And Year( a.data_open) = 2011)
Union
(Select ' 12-DM con Colesterolo 2011' As Esame, Count( Distinct b.codice) As pazienti From V_Pazienti p, cart_pazpbl b, cart_accert a WHERE p.codice = b.codice AND p.codice=a.codice AND b.cp_code Like '250%' AND Years(p.datanasc, Today())>16 And a.ac_nt_code IN ('90.14.3') And Year( a.data_open) = 2011)
Union
(Select ' 13-DM con HDL 2011' As Esame, Count( Distinct b.codice) As pazienti From V_Pazienti p, cart_pazpbl b, cart_accert a WHERE p.codice = b.codice AND p.codice=a.codice AND b.cp_code Like '250%' AND Years(p.datanasc, Today())>16 And a.ac_nt_code IN ('90.14.1') And Year( a.data_open) = 2011)
Union
(Select ' 14-M con Trigliceridi 2011' As Esame, Count( Distinct b.codice) As pazienti From V_Pazienti p, cart_pazpbl b, cart_accert a WHERE p.codice=b.codice AND p.codice=a.codice AND b.cp_code Like '250%' AND Years(p.datanasc, Today())>16 And a.ac_nt_code IN ('90.43.2') And Year( a.data_open) = 2011)
Union
(Select ' 15-BPCO con Spirometria 2011' As Esame, Count( Distinct b.codice) As pazienti From V_Pazienti p, cart_pazpbl b, cart_accert a Where p.codice=b.codice AND p.codice=a.codice AND b.cp_code Like '496%' And a.ac_nt_code IN ( '89.37.1' , '89.37.2' ) And Year( a.data_open) = 2011)
Union
(Select ' 16-BPCO con BroncoDilatatori 2011' As Esame, Count( Distinct b.codice) As pazienti From V_Pazienti p, cart_pazpbl b, cart_terap t WHERE p.codice = b.codice AND p.codice=t.codice AND b.cp_code Like '496%' And ( t.co_atc Like 'R03AC%' Or t.co_atc Like 'R03AK%' ) And Year( t.data_open) = 2011)


ORDER BY 1

_________________
L'Amministratore
Giuseppe Blasio
avatar
Admin
Admin
Admin

Messaggi : 521
Punti : 3446
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: Query complessa

Messaggio  drtulino il Dom 15 Apr 2012 - 22:26

Giuseppe:

Con la Tua ultima query, come potrai vedere dall'allegato (l'ultima colonna e riferita a questa ultima query), ne estraggo di meno. Potrebbe dipendere da eventuali revocati/deceduti, ecc.?
File allegati
estrazioni cumulative.XLS Non hai il permesso di scaricare i file.(14 kB) Scaricato 3 volte

_________________
Renato Tulino
MMG Monte Argentario (GR)
Facebook Millewin: https://www.facebook.com/groups/utentimillewin/
Twitter: @RenatoTulino
avatar
drtulino
Moderatore
Moderatore

Messaggi : 1808
Punti : 4972
Voti per importanza dei messaggi : 91
Data d'iscrizione : 20.02.11
Età : 54
Località : Monte Argentario (GR)

Visualizza il profilo https://www.facebook.com/groups/utentimillewin/

Torna in alto Andare in basso

Re: Query complessa

Messaggio  Contenuto sponsorizzato


Contenuto sponsorizzato


Torna in alto Andare in basso

Pagina 2 di 3 Precedente  1, 2, 3  Seguente

Torna in alto

- Argomenti simili

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