obbiettivi di salute
3 partecipanti
obbiettivi di salute
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
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
- Messaggi : 284
Punti : 5430
Voti per importanza dei messaggi : 3
Data d'iscrizione : 25.02.11
Re: obbiettivi di salute
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
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
- Messaggi : 245
Punti : 5281
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: obbiettivi di salute
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
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
- Messaggi : 284
Punti : 5430
Voti per importanza dei messaggi : 3
Data d'iscrizione : 25.02.11
Re: obbiettivi di salute
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
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
- Messaggi : 245
Punti : 5281
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: obbiettivi di salute
PERFETTA!!
Grazie di cuore, purtroppo l'uso di postgresql ci ha fatto perdere tutte le estrazioni create negli anni e non è poco!!
Alla prossima.....
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
- Messaggi : 284
Punti : 5430
Voti per importanza dei messaggi : 3
Data d'iscrizione : 25.02.11
Re: obbiettivi di salute
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
- Messaggi : 26
Punti : 4969
Voti per importanza dei messaggi : 10
Data d'iscrizione : 22.05.11
Re: obbiettivi di salute
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
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
- Messaggi : 245
Punti : 5281
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Elenco completo
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?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' )
filippo- Membro Junior
- Messaggi : 284
Punti : 5430
Voti per importanza dei messaggi : 3
Data d'iscrizione : 25.02.11
Argomenti simili
» OBBIETTIVI DI SALUTE
» Bilanci di salute (PLS)
» Obiettivi di salute
» OBIETTIVI DI SALUTE
» case della salute
» Bilanci di salute (PLS)
» Obiettivi di salute
» OBIETTIVI DI SALUTE
» case della salute
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.