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

obbiettivi di salute

Andare in basso

obbiettivi di salute

Messaggio  filippo il Lun 7 Set 2015 - 13:15

Con lì'avvento di postgresql non funzionano piu' le vecchie selezioni sql. Vorrei sapere come modificare queste:


Na e K in scompensati con data esecuzione esame 01/01/2015 -> 31/12/2015

and p.codice=a2.codice
AND pip.Incent_Code like 'REG0010'
AND a.data_open between inizio and fine
AND (a.Ac_Nt_Code like '90.16.3' AND a.ac_val is not null) and not exists (select b.codice from cart_accert b where a.codice = b.codice and b.Ac_Nt_Code like '90.16.3' and b.data_open between inizio and fine and (b.data_open>a.data_open or (b.data_open=a.data_open and b.rowid>a.rowid)) and b.ac_val is not null)

AND a1.data_open between inizio and fine
AND (a1.Ac_Nt_Code like '90.40.4' AND a1.ac_val is not null) and not exists (select b.codice from cart_accert b where a1.codice = b.codice and b.Ac_Nt_Code like '90.40.4' and b.data_open between inizio and fine and (b.data_open>a1.data_open or (b.data_open=a1.data_open and b.rowid>a1.rowid)) and b.ac_val is not null)

AND a2.data_open between inizio and fine
AND (a2.Ac_Nt_Code like '90.37.4' AND a2.ac_val is not null) and not exists (select b.codice from cart_accert b where a2.codice = b.codice and b.Ac_Nt_Code like '90.37.4' and b.data_open between inizio and fine and (b.data_open>a2.data_open or (b.data_open=a2.data_open and b.rowid>a2.rowid)) and b.ac_val is not null)


order by 3,4,5


Emoglobina glicata ( con data esame) nei diabetici 01/01/2015 -> 31/12/2015

SELECT distinct CAST ('2014-01-01' AS DATE) AS inizio, CAST ('2014-12-31' AS DATE) AS fine, p.cognome, p.nome, p.nascita, a.ac_val as Hb_glic, a.data_open as _data_

FROM pazienti p, nos_002 n, cart_concessioni_pip pip,cart_accert a

WHERE p.codice =n.codice and p.codice=pip.codice and p.codice=a.codice
AND pip.Incent_Code like 'REG0015'
AND a.data_open between inizio and fine
AND (a.Ac_Nt_Code like '90.28.1' AND a.ac_val is not null) and not exists (select b.codice from cart_accert b where a.codice = b.codice and b.Ac_Nt_Code like '90.28.1' and b.data_open between inizio and fine and (b.data_open>a.data_open or (b.data_open=a.data_open and b.rowid>a.rowid)) and b.ac_val is not null)


order by 3,4,5


Emoglobina glicata mancante anno 2015

Select Distinct Cast( p.cognome As Char(15)), p.nome,
Cast( p.nascita As Char(15)) As nascita, p.sesso,

(Select Max( a.data_open) From cart_accert a Where a.codice = p.codice And ac_des Like '%GLICATA%' And a.ac_val Is Not Null And Not Exists (Select a1.codice From cart_accert a1
Where a.codice = a1.codice And a1.ac_des Like '%GLICATA%' And (a1.data_open > a.data_open
Or (a1.data_open = a.data_open And a1.rowid>a.rowid)) And a1.ac_val is Not Null)
And Year( a.data_open ) = '2014' )
_glicata_d_,

(Select Cast( a.ac_val As Dec(3,1)) From cart_accert a Where a.codice = p.codice And ac_des Like '%GLICATA%' And a.ac_val Is Not Null And Not Exists (Select a1.codice From cart_accert a1
Where a.codice = a1.codice And a1.ac_des Like '%GLICATA%' And (a1.data_open > a.data_open
Or (a1.data_open = a.data_open And a1.rowid>a.rowid)) And a1.ac_val is Not Null)
And Year( a.data_open ) = '2014' )
_Bmi_

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
Where u.codice_regionale Like '%' And u.nome Like '%' And p.pa_convenzione Like 'S'
And ( pa_drevoca Is Null Or pa_drevoca > Today() Or ( pa_drevoca Between Today()-365 And
Today() And motivo_revoca = 'S')) And p.decesso Is Null
And DateDiff ( hh, p.nascita, Today())/8766 Between 0 And 130
And Exists (Select b.codice From cart_pazpbl b Where b.codice = p.codice And b.cp_code Like '250%' And Not ( b.pb_status = 'I' And modalita = 'A' ) And b.certezza <> 'S' )
And _glicata_d_ Is Null


Agli esperti un ringraziamento anticipato

filippo
Membro Junior
Membro Junior

Messaggi : 279
Punti : 3198
Voti per importanza dei messaggi : 3
Data d'iscrizione : 25.02.11

Visualizza il profilo

Torna in alto Andare in basso

Re: obbiettivi di salute

Messaggio  Cervino il Mar 8 Set 2015 - 2:24

per il I quesito , è difficile suggerire una soluzione senza visionare tutta la query ( comunque è possibile dedurre le necessarie modifiche dalle query proposte )


2) x estrarre l' HbA1c utilizzando il Registro x i Diabetici , prova con :

SELECT distinct CAST ('2015-01-01' As Date) AS inizio, CAST ('2015-12-31' As date) AS fine, p.cognome, p.nome, p.nascita, a.ac_val  As Hb_glic, a.data_open As _data_

FROM  pazienti p  Left Outer Join  cart_concessioni_pip i  On  p.codice = i.codice
                          Left Outer Join  cart_accert a     On   p.codice = a.codice
                          Left Outer Join  cart_accert a1   On   a1.codice = a.codice
WHERE  i.incent_code  like  'REG0015'
AND  ( a.Ac_Nt_Code ILike '90.28.1' And a.ac_val Is Not Null And Not Exists ( Select a1.codice From cart_accert a1 Where a.codice = a1.codice And a1.ac_nt_code ILike '90.28.1' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid>a.rowid)) And a1.ac_val is Not Null)  And Year( a.data_open ) = '2015' )
Order by  3 , 4 , 5



3) x estrarre i Pazienti Diabetici  con / senza  HbA1c registrata  x  l' anno 2015  dalla  Tabella  Accertamenti , prova con :


Select Distinct Cast( p.cognome As Char(15)), p.nome,   Cast( p.nascita As Char(15)) As nascita, p.sesso,

(Select Max( a.data_open) From cart_accert a Where a.codice = p.codice And ac_des ILIKE '%GLICATA%' And a.ac_val Is Not Null And Not Exists (Select a1.codice From cart_accert a1 Where a.codice = a1.codice And a1.ac_des ILIKE '%GLICATA%' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid>a.rowid)) And a1.ac_val is Not Null)
And Year( a.data_open ) = '2015' )
   _glicata_d_,
 
(Select To_Number( a.ac_val , '99999.99' ) From cart_accert a Where a.codice = p.codice And ac_des ILIKE '%GLICATA%' And ASCII( a.ac_val) Between 48 And 57 And Not Exists (Select a1.codice From cart_accert a1 Where a.codice = a1.codice And a1.ac_des ILIKE '%GLICATA%' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid
>a.rowid)) And a1.ac_val is Not Null) And Year( a.data_open ) = '2015' )
   _HbA1c_

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
WHERE   u.codice_regionale  ILIKE  '%'   And  u.nome  ILIKE  '%'   And  p.pa_convenzione  ILIKE  'S'
AND  ( pa_drevoca Is Null Or pa_drevoca > Today() Or ( pa_drevoca Between Today()-365 And
Today() And motivo_revoca = 'S'))  And  p.decesso Is Null
AND  Days( p.nascita , Today() )*24/8766  Between  0 And 130
And  p.codice  IN ( Select b.codice From cart_pazpbl b Where b.codice = p.codice And b.cp_code ILIKE '250%' And Not ( b.pb_status = 'I' And modalita = 'A' ) And b.certezza <> 'S' )
And  p.codice  IN ( Select a.codice From cart_accert a Where a.codice = p.codice And ac_des ILIKE '%GLICATA%' And a.ac_val Is Not Null And Year( a.data_open ) = '2015' )

 aggiungere  NOT  x avere i paz con DM senza HbA1c nel 2015 all' ultima  clausola :

And  p.codice  NOT IN ( Select a.codice From cart_accert a Where a.codice = p.codice And ac_des ILike '%GLICATA%' And a.ac_val Is Not Null And Year( a.data_open ) = '2015' )



Verificare le condizioni di ricerca .  Ti saluto ,  Sergio

Cervino
Membro Junior
Membro Junior

Messaggi : 221
Punti : 3028
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: obbiettivi di salute

Messaggio  filippo il Mar 8 Set 2015 - 16:02

PERFETTE!!

Grazie

Non mi ero accorto di aver tagliato il teto della prima estrazione:


SELECT distinct CAST ('2014-01-01' AS DATE) AS inizio, CAST ('2014-12-31' AS DATE) AS fine, p.cognome, p.nome, p.nascita, a.ac_val as creatinina, a.data_open as data_cr, a1.ac_val as sodio, a1.data_open as data_so, a2.ac_val as potassio, a2.data_open as data_po

FROM pazienti p, nos_002 n, cart_concessioni_pip pip,cart_accert a,cart_accert a1,cart_accert a2

WHERE p.codice =n.codice and p.codice=pip.codice and p.codice=a.codice and p.codice=a1.codice and p.codice=a2.codice
AND pip.Incent_Code like 'REG0010'
AND a.data_open between inizio and fine
AND (a.Ac_Nt_Code like '90.16.3' AND a.ac_val is not null) and not exists (select b.codice from cart_accert b where a.codice = b.codice and b.Ac_Nt_Code like '90.16.3' and b.data_open between inizio and fine and (b.data_open>a.data_open or (b.data_open=a.data_open and b.rowid>a.rowid)) and b.ac_val is not null)

AND a1.data_open between inizio and fine
AND (a1.Ac_Nt_Code like '90.40.4' AND a1.ac_val is not null) and not exists (select b.codice from cart_accert b where a1.codice = b.codice and b.Ac_Nt_Code like '90.40.4' and b.data_open between inizio and fine and (b.data_open>a1.data_open or (b.data_open=a1.data_open and b.rowid>a1.rowid)) and b.ac_val is not null)

AND a2.data_open between inizio and fine
AND (a2.Ac_Nt_Code like '90.37.4' AND a2.ac_val is not null) and not exists (select b.codice from cart_accert b where a2.codice = b.codice and b.Ac_Nt_Code like '90.37.4' and b.data_open between inizio and fine and (b.data_open>a2.data_open or (b.data_open=a2.data_open and b.rowid>a2.rowid)) and b.ac_val is not null)


order by 3,4,5

filippo
Membro Junior
Membro Junior

Messaggi : 279
Punti : 3198
Voti per importanza dei messaggi : 3
Data d'iscrizione : 25.02.11

Visualizza il profilo

Torna in alto Andare in basso

Re: obbiettivi di salute

Messaggio  Cervino il Mer 9 Set 2015 - 0:35

Quando gli accertamenti da analizzare sono piu' di 1 ( o 2 ) è meglio usare usare le subquery :

SELECT distinct  Cast( '2015-01-01' As Date) As inizio , Cast( '2015-12-31' As Date) As fine , p.cognome , p.nome , p.nascita ,

( Select  a.ac_val  From cart_accert a  Where a.codice = p.codice  And ( a.ac_nt_code  Ilike  '90.16.3'  And  Year( a.data_open) = 2015  And  Ascii( a.ac_val ) Between 48  And 57 )  And Not Exists  ( Select a1.codice From cart_accert a1 Where a1.codice=a.codice And a1.ac_nt_code Ilike '90.16.3'  And (a1.data_open > a.data_open Or ( a1.data_open=a.data_open And a1.rowid>a.rowid )) And a1.ac_val Is Not Null ))
   _Creatinina_,

(Select  a.data_open  From  cart_accert a  Where  a.codice = p.codice  And ( a.ac_nt_code  Ilike  '90.16.3'  And  Year( a.data_open) = 2015  And  Ascii( a.ac_val ) Between 48 And 57  )  And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_nt_code Ilike '90.16.3' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid>a.rowid)) And a1.ac_val Is Not Null ))
   _Creatinina_d_,

( Select  a.ac_val  From cart_accert a  Where a.codice = p.codice  And ( a.ac_nt_code  Ilike  '90.40.4'  And  Year( a.data_open) = 2015  And  Ascii( a.ac_val ) Between 48  And 57 )  And Not Exists  ( Select a1.codice From cart_accert a1 Where a1.codice=a.codice And a1.ac_nt_code Ilike '90.40.4'  And (a1.data_open > a.data_open Or ( a1.data_open=a.data_open And a1.rowid>a.rowid )) And a1.ac_val Is Not Null ))
   _Sodio_,

(Select  a.data_open  From  cart_accert a  Where  a.codice = p.codice  And ( a.ac_nt_code  Ilike  '90.40.4'  And  Year( a.data_open) = 2015  And  Ascii( a.ac_val ) Between 48 And 57  )  And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_nt_code Ilike '90.40.4' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid>a.rowid)) And a1.ac_val Is Not Null ))
   _Sodio_d_,

( Select  a.ac_val  From cart_accert a  Where a.codice = p.codice  And ( a.ac_nt_code  Ilike  '90.37.4'  And  Year( a.data_open) = 2015  And  Ascii( a.ac_val ) Between 48  And 57 )  And Not Exists  ( Select a1.codice From cart_accert a1 Where a1.codice=a.codice And a1.ac_nt_code Ilike '90.37.4'  And (a1.data_open > a.data_open Or ( a1.data_open=a.data_open And a1.rowid>a.rowid )) And a1.ac_val Is Not Null ))
   _Potassio_,

(Select  a.data_open  From  cart_accert a  Where  a.codice = p.codice  And ( a.ac_nt_code  Ilike  '90.37.4'  And  Year( a.data_open) = 2015  And  Ascii( a.ac_val ) Between 48 And 57  )  And Not Exists ( Select a1.codice From cart_accert a1 Where a1.codice = a.codice And a1.ac_nt_code Ilike '90.37.4' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid>a.rowid)) And a1.ac_val Is Not Null ))
   _Potassio_d_

FROM  pazienti p  Left Outer Join  cart_concessioni_pip i  On  p.codice = i.codice
WHERE   i.incent_code  ILike  'REG0010'
Order by  3 , 4 , 5


la query è ottimizzata x l' utilizzo in pgAdmin III ( i valori sono con la virgola , soluzione idonea per l' export dei dati in formato .csv ed il successivo import in OpenOffice ) ;
Non ricordo come si comporti MU al riguardo  ( ma forse riconosce i valori con il punto ? )


Ti saluto ,    Sergio ,  Orzivecchi    BS

Cervino
Membro Junior
Membro Junior

Messaggi : 221
Punti : 3028
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: obbiettivi di salute

Messaggio  filippo il Mer 9 Set 2015 - 16:49

PERFETTA!!

Grazie di cuore, purtroppo l'uso di postgresql ci ha fatto perdere tutte le estrazioni create negli anni e non è poco!!
Alla prossima.....

filippo
Membro Junior
Membro Junior

Messaggi : 279
Punti : 3198
Voti per importanza dei messaggi : 3
Data d'iscrizione : 25.02.11

Visualizza il profilo

Torna in alto Andare in basso

Re: obbiettivi di salute

Messaggio  viscardo il Lun 14 Set 2015 - 10:23

filippo ha scritto:PERFETTA!!

Grazie di cuore, purtroppo l'uso di postgresql ci ha fatto perdere tutte le estrazioni create negli anni e non è poco!!
Alla prossima.....

Sergio sai suggerire una guida su cui studiare per imparare le differenze tra postgres e Sybase?

viscardo
Nuovo Membro
Nuovo Membro

Messaggi : 26
Punti : 2746
Voti per importanza dei messaggi : 10
Data d'iscrizione : 22.05.11

Visualizza il profilo

Torna in alto Andare in basso

Re: obbiettivi di salute

Messaggio  Cervino il Sab 19 Set 2015 - 0:19

sulla Rete hai ampia Possibilità di scelta , basta inserire un quesito specifico ed avviare la ricerca ;    per iniziare : 

http://www.postgresql.org/docs/   -->  nel  riquadro di destra :   Online Manuals   -->  scegliere la versione desiderata ( attualmente 9.4 o precedenti , cambiano solo dettagli poco rilevanti x Noi ) e selezionare il link  With (  http://www.postgresql.org/docs/9.4/static/index.html )  e  x  le  query  consulta  la  sezione II :  http://www.postgresql.org/docs/9.4/interactive/sql.html 

Usare  PgAdmin III ( dalla  v1.12  alla  v1.20 )  anzichè  MilleUtilità , facilita abbastanza la stesura e la verificha delle query .

Ti saluto ,  Sergio

Cervino
Membro Junior
Membro Junior

Messaggi : 221
Punti : 3028
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

Elenco completo

Messaggio  filippo il Mer 4 Nov 2015 - 19:36

Cervino ha scritto:
2) x estrarre l' HbA1c utilizzando il Registro x i Diabetici , prova con :

SELECT distinct CAST ('2015-01-01' As Date) AS inizio, CAST ('2015-12-31' As date) AS fine, p.cognome, p.nome, p.nascita, a.ac_val  As Hb_glic, a.data_open As _data_

FROM  pazienti p  Left Outer Join  cart_concessioni_pip i  On  p.codice = i.codice
                          Left Outer Join  cart_accert a     On   p.codice = a.codice
                          Left Outer Join  cart_accert a1   On   a1.codice = a.codice
WHERE  i.incent_code  like  'REG0015'
AND  ( a.Ac_Nt_Code ILike '90.28.1' And a.ac_val Is Not Null And Not Exists ( Select a1.codice From cart_accert a1 Where a.codice = a1.codice And a1.ac_nt_code ILike '90.28.1' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid>a.rowid)) And a1.ac_val is Not Null)  And Year( a.data_open ) = '2015' )
Order by  3 , 4 , 5



3) x estrarre i Pazienti Diabetici  con / senza  HbA1c registrata  x  l' anno 2015  dalla  Tabella  Accertamenti , prova con :


Select Distinct Cast( p.cognome As Char(15)), p.nome,   Cast( p.nascita As Char(15)) As nascita, p.sesso,

(Select Max( a.data_open) From cart_accert a Where a.codice = p.codice And ac_des ILIKE '%GLICATA%' And a.ac_val Is Not Null And Not Exists (Select a1.codice From cart_accert a1 Where a.codice = a1.codice And a1.ac_des ILIKE '%GLICATA%' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid>a.rowid)) And a1.ac_val is Not Null)
And Year( a.data_open ) = '2015' )
   _glicata_d_,
 
(Select To_Number( a.ac_val , '99999.99' ) From cart_accert a Where a.codice = p.codice And ac_des ILIKE '%GLICATA%' And ASCII( a.ac_val) Between 48 And 57 And Not Exists (Select a1.codice From cart_accert a1 Where a.codice = a1.codice And a1.ac_des ILIKE '%GLICATA%' And (a1.data_open > a.data_open Or (a1.data_open = a.data_open And a1.rowid
>a.rowid)) And a1.ac_val is Not Null) And Year( a.data_open ) = '2015' )
   _HbA1c_

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
WHERE   u.codice_regionale  ILIKE  '%'   And  u.nome  ILIKE  '%'   And  p.pa_convenzione  ILIKE  'S'
AND  ( pa_drevoca Is Null Or pa_drevoca > Today() Or ( pa_drevoca Between Today()-365 And
Today() And motivo_revoca = 'S'))  And  p.decesso Is Null
AND  Days( p.nascita , Today() )*24/8766  Between  0 And 130
And  p.codice  IN ( Select b.codice From cart_pazpbl b Where b.codice = p.codice And b.cp_code ILIKE '250%' And Not ( b.pb_status = 'I' And modalita = 'A' ) And b.certezza <> 'S' )
And  p.codice  IN ( Select a.codice From cart_accert a Where a.codice = p.codice And ac_des ILIKE '%GLICATA%' And a.ac_val Is Not Null And Year( a.data_open ) = '2015' )

 aggiungere  NOT  x avere i paz con DM senza HbA1c nel 2015 all' ultima  clausola :

And  p.codice  NOT IN ( Select a.codice From cart_accert a Where a.codice = p.codice And ac_des ILike '%GLICATA%' And a.ac_val Is Not Null And Year( a.data_open ) = '2015' )

In queste estrazioni, differentemente da quella dello scompenso, vengono visualizzati solo i pazienti che hanno effettuato la EG nel 2015. Ci sarebbe la necessita' di far comparire anche quei pazienti che non l'hanno effettuata. E' possibile?

filippo
Membro Junior
Membro Junior

Messaggi : 279
Punti : 3198
Voti per importanza dei messaggi : 3
Data d'iscrizione : 25.02.11

Visualizza il profilo

Torna in alto Andare in basso

Re: obbiettivi di salute

Messaggio  Contenuto sponsorizzato


Contenuto sponsorizzato


Torna in alto Andare in basso

Torna in alto

- Argomenti simili

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