help progetto dono
2 partecipanti
help progetto dono
Salve a tutti,
qualcuno puo'darmi una mano x questo progetto; si sono cercati paz. che hanno presentato dolore articolare x vari motivi per un certo periodo e sii e' aperta la scheda pain per la valutazione del dolore.
Estratti con questa query il campione selezionato:
[COMMENTO]
ESTRAZIONE GLOBALE SCHEDE PAIN CORRELATE AL PROBLEMA 'DONO'
[SQL]
select distinct
p.cognome,
p.nome,
p.codice_fiscale,
p.sesso,
p.nascita,
u.cognome||' '||u.nome as Medico,
c.cp_code,
c.pr_descr ||' '|| c.addenda as problema_descr,
(SELECT max( a1.data_open ) from cart_accert a1 WHERE
a1.ac_des ilike '%pain valutazione%' AND a1.codice = p.codice AND a1.data_open > '2015-01-01' AND a1.data_open < '2016-03-31'
AND NOT EXISTS
(SELECT a2.codice from cart_accert a2 where a2.ac_des ilike '%pain valutazione%' AND a2.data_open>a1.data_open AND a2.codice = p.codice AND a1.data_open > '2015-12-31' AND a1.data_open < '2015-03-31') ) as data_registrazione_scheda_pain
from
pazienti p inner join cart_problemi c on p.codice =c.codice inner join nos_002 n on n.codice = p.codice inner join v_utenti u on u.userid =n.pa_medi
where
u.userid in ('9D8V4ZR')
and
addenda ilike '%DONO%' and addenda not ilike '%pseudono%'
order by u.cognome||' '||u.nome,p.cognome,p.nome
bisognerebbe trovare il sistema di poter estrarre dal campione selezionato i dati delle schede pain
l'iniziale e la finale di chiusura del lavoro e gli accertamenti e le terapie legati al problema per cui è stata aperta la scheda pain.
Attendo fiducioso aiuto dai Maestri..
Mario
qualcuno puo'darmi una mano x questo progetto; si sono cercati paz. che hanno presentato dolore articolare x vari motivi per un certo periodo e sii e' aperta la scheda pain per la valutazione del dolore.
Estratti con questa query il campione selezionato:
[COMMENTO]
ESTRAZIONE GLOBALE SCHEDE PAIN CORRELATE AL PROBLEMA 'DONO'
[SQL]
select distinct
p.cognome,
p.nome,
p.codice_fiscale,
p.sesso,
p.nascita,
u.cognome||' '||u.nome as Medico,
c.cp_code,
c.pr_descr ||' '|| c.addenda as problema_descr,
(SELECT max( a1.data_open ) from cart_accert a1 WHERE
a1.ac_des ilike '%pain valutazione%' AND a1.codice = p.codice AND a1.data_open > '2015-01-01' AND a1.data_open < '2016-03-31'
AND NOT EXISTS
(SELECT a2.codice from cart_accert a2 where a2.ac_des ilike '%pain valutazione%' AND a2.data_open>a1.data_open AND a2.codice = p.codice AND a1.data_open > '2015-12-31' AND a1.data_open < '2015-03-31') ) as data_registrazione_scheda_pain
from
pazienti p inner join cart_problemi c on p.codice =c.codice inner join nos_002 n on n.codice = p.codice inner join v_utenti u on u.userid =n.pa_medi
where
u.userid in ('9D8V4ZR')
and
addenda ilike '%DONO%' and addenda not ilike '%pseudono%'
order by u.cognome||' '||u.nome,p.cognome,p.nome
bisognerebbe trovare il sistema di poter estrarre dal campione selezionato i dati delle schede pain
l'iniziale e la finale di chiusura del lavoro e gli accertamenti e le terapie legati al problema per cui è stata aperta la scheda pain.
Attendo fiducioso aiuto dai Maestri..
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: help progetto dono
mario shirt ha scritto:Salve a tutti,
qualcuno puo'darmi una mano x questo progetto; si sono cercati paz. che hanno presentato dolore articolare x vari motivi per un certo periodo e sii e' aperta la scheda pain per la valutazione del dolore.
Estratti con questa query il campione selezionato:
select distinct p.cognome, p.nome, p.codice_fiscale, p.sesso, p.nascita, u.cognome||' '||u.nome as Medico,
c.cp_code, c.pr_descr ||' '|| c.addenda as problema_descr,
(SELECT max( a1.data_open ) from cart_accert a1 WHERE
a1.ac_des ilike '%pain valutazione%' AND a1.codice = p.codice AND a1.data_open > '2015-01-01' AND a1.data_open < '2016-03-31'
AND NOT EXISTS (SELECT a2.codice from cart_accert a2 where a2.ac_des ilike '%pain valutazione%' AND a2.data_open>a1.data_open AND a2.codice = p.codice AND a1.data_open > '2015-12-31' AND a1.data_open < '2015-03-31') ) as data_registrazione_scheda_pain
from
pazienti p inner join cart_problemi c on p.codice =c.codice inner join nos_002 n on n.codice = p.codice inner join v_utenti u on u.userid =n.pa_medi where u.userid in ('9D8V4ZR') and
addenda ilike '%DONO%' and addenda not ilike '%pseudono%'
order by u.cognome||' '||u.nome,p.cognome,p.nome
bisognerebbe trovare il sistema di poter estrarre dal campione selezionato i dati delle schede pain
l'iniziale e la finale di chiusura del lavoro e gli accertamenti e le terapie legati al problema per cui è stata aperta la scheda pain.
Attendo fiducioso aiuto dai Maestri..
Mario
Purtroppo non ho mai compilato la scheda Valutazione Dolore e non ho idea dove vengano salvati i dati relativi ai campi compilati ; posso solo suggerire una query approssimativa e presuntiva x estrarre le righe compilate relative ad uno specifico problema ( ovviamente in Modalità Problema Obbligatoria ) in un determinato periodo :
WITH mmg AS ( SELECT userid , nome FROM v_utenti WHERE codice_regionale ILike '%' ) ,
evento AS ( SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND ( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND data_open > Today()-730 ) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) ,
terapia AS ( SELECT codice , data_open As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , ur_pb_id FROM cart_terap WHERE /* codice IN ( Select codice From paz_ssr) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) ,
accert AS ( SELECT a.codice , a.data_open As acc_d , a.ac_des As acc_tipo , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE /* a.codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) /* AND ac_tipo NOT IN ('STI' , 'EO' , '_SG' ) */ AND a.data_open > Today()-730 ) ,
diario AS ( SELECT codice , data_open As diario_d , de_descr As diario FROM cart_descriz WHERE /* codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 )
SELECT cognome , nome , nascita , sesso , eta , pbl_onset As ev_d , pbl As descriz , pbl_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , terap_d , drug , n_pezzi , posologia , atc , '2'
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , acc_d , acc_tipo , acc_v , ac_tipo , '' , '3'
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , diario_d , diario , '' , '' , '' , '4'
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS NOT Null
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
Adattare le Clausole ( specie quelle in WITH che selezionano le viste CTE ) alle proprie esigenze e/o necessità ; non ho suggerimenti migliori al riguardo . Ti saluto , Sergio , Orzivecchi BS
PS provo un tipo diverso di format ( query meno leggibile ma funzionante in PgAdmin e MU direttamente con Copia e Incolla ):
WITH mmg AS ( SELECT userid , nome FROM v_utenti WHERE codice_regionale ILike '%' ) ,
evento AS ( SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND ( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND data_open > Today()-730 ) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) ,
terapia AS ( SELECT codice , data_open As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , ur_pb_id FROM cart_terap WHERE /* codice IN ( Select codice From paz_ssr) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) ,
accert AS ( SELECT a.codice , a.data_open As acc_d , a.ac_des As acc_tipo , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE /* a.codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) /* AND ac_tipo NOT IN ('STI' , 'EO' , '_SG' ) */ AND a.data_open > Today()-730 ) ,
diario AS ( SELECT codice , data_open As diario_d , de_descr As diario FROM cart_descriz WHERE /* codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 )
SELECT cognome , nome , nascita , sesso , eta , pbl_onset As ev_d , pbl As descriz , pbl_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , terap_d , drug , n_pezzi , posologia , atc , '2'
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , acc_d , acc_tipo , acc_v , ac_tipo , '' , '3'
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , diario_d , diario , '' , '' , '' , '4'
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS NOT Null
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
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: help progetto dono
Cervino ha scritto:mario shirt ha scritto:Salve a tutti,
qualcuno puo'darmi una mano x questo progetto; si sono cercati paz. che hanno presentato dolore articolare x vari motivi per un certo periodo e sii e' aperta la scheda pain per la valutazione del dolore.
Estratti con questa query il campione selezionato:
select distinct p.cognome, p.nome, p.codice_fiscale, p.sesso, p.nascita, u.cognome||' '||u.nome as Medico,
c.cp_code, c.pr_descr ||' '|| c.addenda as problema_descr,
(SELECT max( a1.data_open ) from cart_accert a1 WHERE
a1.ac_des ilike '%pain valutazione%' AND a1.codice = p.codice AND a1.data_open > '2015-01-01' AND a1.data_open < '2016-03-31'
AND NOT EXISTS (SELECT a2.codice from cart_accert a2 where a2.ac_des ilike '%pain valutazione%' AND a2.data_open>a1.data_open AND a2.codice = p.codice AND a1.data_open > '2015-12-31' AND a1.data_open < '2015-03-31') ) as data_registrazione_scheda_pain
from
pazienti p inner join cart_problemi c on p.codice =c.codice inner join nos_002 n on n.codice = p.codice inner join v_utenti u on u.userid =n.pa_medi where u.userid in ('9D8V4ZR') and
addenda ilike '%DONO%' and addenda not ilike '%pseudono%'
order by u.cognome||' '||u.nome,p.cognome,p.nome
bisognerebbe trovare il sistema di poter estrarre dal campione selezionato i dati delle schede pain
l'iniziale e la finale di chiusura del lavoro e gli accertamenti e le terapie legati al problema per cui è stata aperta la scheda pain.
Attendo fiducioso aiuto dai Maestri..
Mario
Purtroppo non ho mai compilato la scheda Valutazione Dolore e non ho idea dove vengano salvati i dati relativi ai campi compilati ; posso solo suggerire una query approssimativa e presuntiva x estrarre le righe compilate relative ad uno specifico problema ( ovviamente in Modalità Problema Obbligatoria ) in un determinato periodo :
WITH mmg AS ( SELECT userid , nome FROM v_utenti WHERE codice_regionale ILike '%' ) ,
evento AS ( SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND ( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND data_open > Today()-730 ) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) ,
terapia AS ( SELECT codice , data_open As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , ur_pb_id FROM cart_terap WHERE /* codice IN ( Select codice From paz_ssr) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) ,
accert AS ( SELECT a.codice , a.data_open As acc_d , a.ac_des As acc_tipo , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE /* a.codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) /* AND ac_tipo NOT IN ('STI' , 'EO' , '_SG' ) */ AND a.data_open > Today()-730 ) ,
diario AS ( SELECT codice , data_open As diario_d , de_descr As diario FROM cart_descriz WHERE /* codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 )
SELECT cognome , nome , nascita , sesso , eta , pbl_onset As ev_d , pbl As descriz , pbl_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , terap_d , drug , n_pezzi , posologia , atc , '2'
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , acc_d , acc_tipo , acc_v , ac_tipo , '' , '3'
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , diario_d , diario , '' , '' , '' , '4'
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS NOT Null
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
Adattare le Clausole ( specie quelle in WITH che selezionano le viste CTE ) alle proprie esigenze e/o necessità ; non ho suggerimenti migliori al riguardo . Ti saluto , Sergio , Orzivecchi BS
PS provo un tipo diverso di format ( query meno leggibile ma funzionante in PgAdmin e MU direttamente con Copia e Incolla ):
WITH mmg AS ( SELECT userid , nome FROM v_utenti WHERE codice_regionale ILike '%' ) ,
evento AS ( SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND ( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND data_open > Today()-730 ) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) ,
terapia AS ( SELECT codice , data_open As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , ur_pb_id FROM cart_terap WHERE /* codice IN ( Select codice From paz_ssr) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) ,
accert AS ( SELECT a.codice , a.data_open As acc_d , a.ac_des As acc_tipo , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE /* a.codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) /* AND ac_tipo NOT IN ('STI' , 'EO' , '_SG' ) */ AND a.data_open > Today()-730 ) ,
diario AS ( SELECT codice , data_open As diario_d , de_descr As diario FROM cart_descriz WHERE /* codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 )
SELECT cognome , nome , nascita , sesso , eta , pbl_onset As ev_d , pbl As descriz , pbl_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , terap_d , drug , n_pezzi , posologia , atc , '2'
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , acc_d , acc_tipo , acc_v , ac_tipo , '' , '3'
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , diario_d , diario , '' , '' , '' , '4'
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS NOT Null
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
grazie mille, molto interessante anche se mi da risultato 0...
Cerchero' di capire dove sbaglio ad adattare le clausole, tanto c'e' sabato e domenica....
Eventualmente .. chiedo Aiuto...
Mario
Buon fine settimana
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: help progetto dono
Mi scuso x l' errore ( purtroppo sul MillePS monoutente funziona lo stesso !!! ) : innanzitutto va corretta la prima CTE ( Common Table Expressions che si ottengono anteponendo WITH alle varie subquery ) sostituendo codice_regionale con nome , per cui diventa :
SELECT userid , nome FROM v_utenti WHERE nome ILike '%' /* Inserire eventualmente il nome utente del singolo Medico su un MillePS MultiUtente )
poi provare con :
SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset , userid FROM cart_problemi WHERE userid IN ( SELECT userid FROM v_utenti WHERE nome ILike '%' ) AND ( addenda ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' ) AND data_open > Today()-365
in modo analogo fare un' altra prova disattivando con /* */ alcune CTE e query :
WITH mmg AS ( SELECT userid , nome FROM v_utenti WHERE nome ILike '%' ) ,
evento AS ( SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND ( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND data_open > Today()-730 ) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) /* ,
terapia AS ( SELECT codice , data_open As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , ur_pb_id FROM cart_terap WHERE /* codice IN ( Select codice From paz_ssr) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) ,
accert AS ( SELECT a.codice , a.data_open As acc_d , a.ac_des As acc_tipo , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE /* a.codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) /* AND ac_tipo NOT IN ('STI' , 'EO' , '_SG' ) */ AND a.data_open > Today()-730 ) ,
diario AS ( SELECT codice , data_open As diario_d , de_descr As diario FROM cart_descriz WHERE /* codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) */
SELECT cognome , nome , nascita , sesso , eta , pbl_onset As ev_d , pbl As descriz , pbl_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS NOT Null /*
UNION
SELECT cognome , nome , nascita , sesso , eta , terap_d , drug , n_pezzi , posologia , atc , '2'
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , acc_d , acc_tipo , acc_v , ac_tipo , '' , '3'
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , diario_d , diario , '' , '' , '' , '4'
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS NOT Null */
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
poi aggiungere alla prova un' altra CTE e la relativa query :
WITH mmg AS ( SELECT userid , nome FROM v_utenti WHERE nome ILike '%' ) ,
evento AS ( SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND ( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND data_open > Today()-730 ) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) ,
terapia AS ( SELECT codice , data_open As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , ur_pb_id FROM cart_terap WHERE /* codice IN ( Select codice From paz_ssr) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) /* ,
accert AS ( SELECT a.codice , a.data_open As acc_d , a.ac_des As acc_tipo , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE /* a.codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) /* AND ac_tipo NOT IN ('STI' , 'EO' , '_SG' ) */ AND a.data_open > Today()-730 ) ,
diario AS ( SELECT codice , data_open As diario_d , de_descr As diario FROM cart_descriz WHERE /* codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) */
SELECT cognome , nome , nascita , sesso , eta , pbl_onset As ev_d , pbl As descriz , pbl_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , terap_d , drug , n_pezzi , posologia , atc , '2'
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS NOT Null /*
UNION
SELECT cognome , nome , nascita , sesso , eta , acc_d , acc_tipo , acc_v , ac_tipo , '' , '3'
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , diario_d , diario , '' , '' , '' , '4'
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS NOT Null */
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
se il risultato è accettabile aggiungere un' altra CTE e realtiva query .
Saluti , Sergio
SELECT userid , nome FROM v_utenti WHERE nome ILike '%' /* Inserire eventualmente il nome utente del singolo Medico su un MillePS MultiUtente )
poi provare con :
SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset , userid FROM cart_problemi WHERE userid IN ( SELECT userid FROM v_utenti WHERE nome ILike '%' ) AND ( addenda ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' ) AND data_open > Today()-365
in modo analogo fare un' altra prova disattivando con /* */ alcune CTE e query :
WITH mmg AS ( SELECT userid , nome FROM v_utenti WHERE nome ILike '%' ) ,
evento AS ( SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND ( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND data_open > Today()-730 ) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) /* ,
terapia AS ( SELECT codice , data_open As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , ur_pb_id FROM cart_terap WHERE /* codice IN ( Select codice From paz_ssr) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) ,
accert AS ( SELECT a.codice , a.data_open As acc_d , a.ac_des As acc_tipo , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE /* a.codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) /* AND ac_tipo NOT IN ('STI' , 'EO' , '_SG' ) */ AND a.data_open > Today()-730 ) ,
diario AS ( SELECT codice , data_open As diario_d , de_descr As diario FROM cart_descriz WHERE /* codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) */
SELECT cognome , nome , nascita , sesso , eta , pbl_onset As ev_d , pbl As descriz , pbl_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS NOT Null /*
UNION
SELECT cognome , nome , nascita , sesso , eta , terap_d , drug , n_pezzi , posologia , atc , '2'
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , acc_d , acc_tipo , acc_v , ac_tipo , '' , '3'
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , diario_d , diario , '' , '' , '' , '4'
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS NOT Null */
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
poi aggiungere alla prova un' altra CTE e la relativa query :
WITH mmg AS ( SELECT userid , nome FROM v_utenti WHERE nome ILike '%' ) ,
evento AS ( SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND ( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND data_open > Today()-730 ) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) ,
terapia AS ( SELECT codice , data_open As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , ur_pb_id FROM cart_terap WHERE /* codice IN ( Select codice From paz_ssr) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) /* ,
accert AS ( SELECT a.codice , a.data_open As acc_d , a.ac_des As acc_tipo , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE /* a.codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) /* AND ac_tipo NOT IN ('STI' , 'EO' , '_SG' ) */ AND a.data_open > Today()-730 ) ,
diario AS ( SELECT codice , data_open As diario_d , de_descr As diario FROM cart_descriz WHERE /* codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) */
SELECT cognome , nome , nascita , sesso , eta , pbl_onset As ev_d , pbl As descriz , pbl_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , terap_d , drug , n_pezzi , posologia , atc , '2'
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS NOT Null /*
UNION
SELECT cognome , nome , nascita , sesso , eta , acc_d , acc_tipo , acc_v , ac_tipo , '' , '3'
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , diario_d , diario , '' , '' , '' , '4'
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS NOT Null */
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
se il risultato è accettabile aggiungere un' altra CTE e realtiva query .
Saluti , Sergio
Cervino- Membro Junior
- Messaggi : 245
Punti : 5281
Voti per importanza dei messaggi : 22
Data d'iscrizione : 03.03.11
Età : 70
Località : Orzivecchi (BS)
Re: help progetto dono
Scusa Sergio, (sono un po' duro!!!)
mi torna sempre 0, non so dove sbaglio e dove correggere la tua query.
Mi spiego meglio forse puoi sistemare tu la query: nella query iniziale che ho postato estraeva i dati partendo dalla scheda pain compilata aggangiata ad un problema codificato (artrosi ginocchio, lombalgia...) a dui era stato aggiunto nel testo libero la parola dono.
Forse la tua query non trova la parola dono? o io non riesco a mettere il medico? (metto il mio nome al posto %... ho provato con il codice MW..)
Grazie
Mario
mi torna sempre 0, non so dove sbaglio e dove correggere la tua query.
Mi spiego meglio forse puoi sistemare tu la query: nella query iniziale che ho postato estraeva i dati partendo dalla scheda pain compilata aggangiata ad un problema codificato (artrosi ginocchio, lombalgia...) a dui era stato aggiunto nel testo libero la parola dono.
Forse la tua query non trova la parola dono? o io non riesco a mettere il medico? (metto il mio nome al posto %... ho provato con il codice MW..)
Grazie
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: help progetto dono
evidentemente forse abbiamo schemi di MillePS diversi ( il mio è un old 13.38 ) ; l' assunto di base è :%mario shirt ha scritto:Scusa Sergio, (sono un po' duro!!!)
mi torna sempre 0, non so dove sbaglio e dove correggere la tua query.
Mi spiego meglio forse puoi sistemare tu la query: nella query iniziale che ho postato estraeva i dati partendo dalla scheda pain compilata aggangiata ad un problema codificato (artrosi ginocchio, lombalgia...) a dui era stato aggiunto nel testo libero la parola dono.
Forse la tua query non trova la parola dono? o io non riesco a mettere il medico? (metto il mio nome al posto %... ho provato con il codice MW..)
Grazie
Mario
1) Select * From v_utenti -->
ottengo le colonne : userid , nome , cognome , codice_fiscale , codice_regionale , tipo_utente
con
2) SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE n.pa_medi IN ( SELECT userid FROM v_utenti WHERE nome ILike '%' Or codice_regionale ILike '%' ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
dovrei ottenere i pazienti SSR presenti nel MillePS ; se modifico una delle 2 clausole : WHERE nome ILike '%' Or codice_regionale ILike '%'
dovrei ottenere nulla oppure i pazienti del singolo MMG
3) ora combinando le due query e creando la prima CTE , dovrei avere lo stesso risultato :
WITH mmg AS ( SELECT userid , nome FROM v_utenti WHERE codice_regionale ILike '%' ) ,
SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE n.pa_medi IN ( SELECT userid FROM mmg ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
se cosi non fosse , purtroppo abbiamo database MillePS con schemi diversi e/o versioni di MW non compatibili fra loro .
le query in ambiente PostgreSQL hanno uno sviluppo prevalentemente verticale ( grazie all' utilizzo del comando WITH x creare le CTE riutilizzabili ; in tal modo si semplifica notevolmente la stesure di nuove query .
Grato se vorrai testare le 3 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)
Re: help progetto dono
Cervino ha scritto:evidentemente forse abbiamo schemi di MillePS diversi ( il mio è un old 13.38 ) ; l' assunto di base è :%mario shirt ha scritto:Scusa Sergio, (sono un po' duro!!!)
mi torna sempre 0, non so dove sbaglio e dove correggere la tua query.
Mi spiego meglio forse puoi sistemare tu la query: nella query iniziale che ho postato estraeva i dati partendo dalla scheda pain compilata aggangiata ad un problema codificato (artrosi ginocchio, lombalgia...) a dui era stato aggiunto nel testo libero la parola dono.
Forse la tua query non trova la parola dono? o io non riesco a mettere il medico? (metto il mio nome al posto %... ho provato con il codice MW..)
Grazie
Mario
1) Select * From v_utenti -->
ottengo le colonne : userid , nome , cognome , codice_fiscale , codice_regionale , tipo_utente
con
2) SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE n.pa_medi IN ( SELECT userid FROM v_utenti WHERE nome ILike '%' Or codice_regionale ILike '%' ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
dovrei ottenere i pazienti SSR presenti nel MillePS ; se modifico una delle 2 clausole : WHERE nome ILike '%' Or codice_regionale ILike '%'
dovrei ottenere nulla oppure i pazienti del singolo MMG
3) ora combinando le due query e creando la prima CTE , dovrei avere lo stesso risultato :
WITH mmg AS ( SELECT userid , nome FROM v_utenti WHERE codice_regionale ILike '%' ) ,
SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE n.pa_medi IN ( SELECT userid FROM mmg ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
se cosi non fosse , purtroppo abbiamo database MillePS con schemi diversi e/o versioni di MW non compatibili fra loro .
le query in ambiente PostgreSQL hanno uno sviluppo prevalentemente verticale ( grazie all' utilizzo del comando WITH x creare le CTE riutilizzabili ; in tal modo si semplifica notevolmente la stesure di nuove query .
Grato se vorrai testare le 3 query : Ti saluto , Sergio
grazie mille Sergio
query 1 e 2 ok
nella terza messo il mio codice regionale tra gli apici al posto di % risultato 0
mio MW Programma 13.39.28.2239
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: help progetto dono
Grazie per le prove e Delucidazioni ; Non implementare , almeno come sembra in MW 13.38, l' utilizzo delleDmario shirt ha scritto:grazie mille Sergio query 1 e 2 ok
nella terza messo il mio codice regionale tra gli apici al posto di % risultato 0
mio MW Programma 13.39.28.2239 Mario
WITH Queries (Common Table Expressions)
appare quanto meno sconcertante ; comunque l' interfaccia MU x l' esecuzione delle query è ormai obsoleta rispetto a PgAdmin 3 o 4 e scrivere le query con il vecchio sistema è un lavoro tedioso e poco gratificante .
Comunque la Tua query contiene vari imprecisioni e andrebbe corretta in vari punti ma ora con un mix fra vecchio e nuovo, rischio di andare in confusione e di dare suggerimenti inappropriati . Ti saluto Sergio
PS : riporto da un sito web : In PostgreSQL, la WITH query fornisce un modo per scrivere istruzioni ausiliarie da poter usare in una query più grande. Essa aiuta a spezzettare le query complesse e di grandi dimensioni in forme più semplici, che sono facilmente leggibili. Queste Istruzioni o Dichiarazioni, che sono spesso indicati come Espressioni di Tabella Comuni o CTE, possono essere considerati come la definizione di Tabelle o Viste Temporanee che esistono solo per una query
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: help progetto dono
Cervino ha scritto:Mi scuso x l' errore ( purtroppo sul MillePS monoutente funziona lo stesso !!! ) : innanzitutto va corretta la prima CTE ( Common Table Expressions che si ottengono anteponendo WITH alle varie subquery ) sostituendo codice_regionale con nome , per cui diventa :
SELECT userid , nome FROM v_utenti WHERE nome ILike '%' /* Inserire eventualmente il nome utente del singolo Medico su un MillePS MultiUtente )
poi provare con :
SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset , userid FROM cart_problemi WHERE userid IN ( SELECT userid FROM v_utenti WHERE nome ILike '%' ) AND ( addenda ILIKE '%Sinusite%' OR addenda ILIKE '%Bronchite%' ) AND data_open > Today()-365
in modo analogo fare un' altra prova disattivando con /* */ alcune CTE e query :
WITH mmg AS ( SELECT userid , nome FROM v_utenti WHERE nome ILike '%' ) ,
evento AS ( SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND ( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND data_open > Today()-730 ) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) /* ,
terapia AS ( SELECT codice , data_open As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , ur_pb_id FROM cart_terap WHERE /* codice IN ( Select codice From paz_ssr) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) ,
accert AS ( SELECT a.codice , a.data_open As acc_d , a.ac_des As acc_tipo , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE /* a.codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) /* AND ac_tipo NOT IN ('STI' , 'EO' , '_SG' ) */ AND a.data_open > Today()-730 ) ,
diario AS ( SELECT codice , data_open As diario_d , de_descr As diario FROM cart_descriz WHERE /* codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) */
SELECT cognome , nome , nascita , sesso , eta , pbl_onset As ev_d , pbl As descriz , pbl_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS NOT Null /*
UNION
SELECT cognome , nome , nascita , sesso , eta , terap_d , drug , n_pezzi , posologia , atc , '2'
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , acc_d , acc_tipo , acc_v , ac_tipo , '' , '3'
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , diario_d , diario , '' , '' , '' , '4'
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS NOT Null */
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
poi aggiungere alla prova un' altra CTE e la relativa query :
WITH mmg AS ( SELECT userid , nome FROM v_utenti WHERE nome ILike '%' ) ,
evento AS ( SELECT codice , addenda As pbl , cp_code As pbl_code , pb_code , data_open As pbl_onset FROM cart_problemi WHERE userid IN ( Select userid From mmg ) AND ( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND data_open > Today()-730 ) ,
paz_ssr AS ( SELECT p.codice , p.cognome , p.nome , p.nascita , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , Cast( p.sesso As Char(1)) FROM pazienti p LEFT Outer JOIN nos_002 n On p.codice = n.codice WHERE p.codice IN ( Select codice From evento ) And p.pa_convenzione = 'S' And ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null ) ,
terapia AS ( SELECT codice , data_open As terap_d , co_des As drug , te_npezzi As n_pezzi , po_des As posologia , co_atc As atc , ur_pb_id FROM cart_terap WHERE /* codice IN ( Select codice From paz_ssr) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) /* ,
accert AS ( SELECT a.codice , a.data_open As acc_d , a.ac_des As acc_tipo , a.ac_val As acc_v , ac_tipo FROM cart_accert a WHERE /* a.codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) /* AND ac_tipo NOT IN ('STI' , 'EO' , '_SG' ) */ AND a.data_open > Today()-730 ) ,
diario AS ( SELECT codice , data_open As diario_d , de_descr As diario FROM cart_descriz WHERE /* codice IN ( Select codice From evento ) AND */ pb_code IN ( Select pb_code From evento ) AND data_open > Today()-730 ) */
SELECT cognome , nome , nascita , sesso , eta , pbl_onset As ev_d , pbl As descriz , pbl_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
FROM paz_ssr p LEFT JOIN evento l ON p.codice = l.codice WHERE pbl_onset IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , terap_d , drug , n_pezzi , posologia , atc , '2'
FROM paz_ssr p LEFT JOIN terapia t ON p.codice = t.codice WHERE terap_d IS NOT Null /*
UNION
SELECT cognome , nome , nascita , sesso , eta , acc_d , acc_tipo , acc_v , ac_tipo , '' , '3'
FROM paz_ssr p LEFT JOIN accert a ON p.codice = a.codice WHERE acc_d IS NOT Null
UNION
SELECT cognome , nome , nascita , sesso , eta , diario_d , diario , '' , '' , '' , '4'
FROM paz_ssr p LEFT JOIN diario d ON p.codice = d.codice WHERE diario_d IS NOT Null */
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
se il risultato è accettabile aggiungere un' altra CTE e realtiva query .
Saluti , Sergio
Sergio, miracolo!!! (per me!!),
ho fatto un copia e incolla su pgAdmin3 e tutte le tue query funzionano...
Mario
P.S. il problema e' che gia' io sono scarso su pgAdmin, ma i colleghi da cui estrarre i dati, non sanno nemmeno cosa sia...
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: help progetto dono
Complimenti , devi aver un po' di pazienza e perseveranza ma una volta presa familiarità con la piu' performante Utility ( una decina di estrazioni sono sufficiente , sembra meno intuitivo all' inizio ma tuttavia è un' impressione fallace) potrai pensionare MU per le ricerche statistiche almeno .mario shirt ha scritto:Sergio, miracolo!!! (per me!!),
ho fatto un copia e incolla su pgAdmin3 e tutte le tue query funzionano...
Mario
P.S. il problema e' che gia' io sono scarso su pgAdmin, ma i colleghi da cui estrarre i dati, non sanno nemmeno cosa sia...
Ciao , Sergio
PS : Resta da capire in quale campo MW salvi il risultato della compilazione della scheda di Valutazione del Dolore : lo archivia forse come allegato ?
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: help progetto dono
Cervino ha scritto:Complimenti , devi aver un po' di pazienza e perseveranza ma una volta presa familiarità con la piu' performante Utility ( una decina di estrazioni sono sufficiente , sembra meno intuitivo all' inizio ma tuttavia è un' impressione fallace) potrai pensionare MU per le ricerche statistiche almeno .mario shirt ha scritto:Sergio, miracolo!!! (per me!!),
ho fatto un copia e incolla su pgAdmin3 e tutte le tue query funzionano...
Mario
P.S. il problema e' che gia' io sono scarso su pgAdmin, ma i colleghi da cui estrarre i dati, non sanno nemmeno cosa sia...
Ciao , Sergio
PS : Resta da capire in quale campo MW salvi il risultato della compilazione della scheda di Valutazione del Dolore : lo archivia forse come allegato ?
Rimane il solito problema: non esportabile ai colleghi coinvolti nella ricerca.. Mi puoi dire dove hai studiato il pgAdmin (in italiano..) magari succinto e non sul manuale ufficiale in inglese?
La scheda pain non so dove viene archiviata, ma utilizzando la semplice query postata in "query molto complessa" (mi sembra..) estae anche alcune voci della scheda pain. Puoi provare?
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: help progetto dono
Quindi hai problemi con la query :mario shirt ha scritto:
Rimane il solito problema: non esportabile ai colleghi coinvolti nella ricerca.. Mi puoi dire dove hai studiato il pgAdmin (in italiano..) magari succinto e non sul manuale ufficiale in inglese?
La scheda pain non so dove viene archiviata, ma utilizzando la semplice query postata in "query molto complessa" (mi sembra..) estae anche alcune voci della scheda pain. Puoi provare?
Mario
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , l.data_open As ev_d , pr_descr ||' , '|| Addenda As descriz , cp_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
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_problemi l ON p.codice = l.codice )
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' ) AND l.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , t.data_open , t.co_des , t.te_npezzi , t.po_des , t.co_atc , '2'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_terap t ON p.codice = t.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' )
AND l.pb_code = t.pb_code AND t.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , a.data_open , a.ac_des , a.ac_val , a.ac_tipo , '' , '3'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' )
AND l.pb_code = a.pb_code AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , d.data_open , d.de_descr , '' , '' , '' , '4'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_descriz d ON p.codice = d.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' )
AND l.pb_code = d.pb_code AND d.data_open IS NOT Null
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
sul mio MillepS MonoUtente sembra funzionare senza problemi ( ed i Pazienti non mancano in quanto con addenda ILIKE '%Don%' : ottengo tutte le registrazioni effettuate in un dato periodo in : Problemi , Accertamenti , Diario e Terapia per i Donatori di Sangue ; resta da capire ove siano archiviati i dati relativi alla scheda PAIN .
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: help progetto dono
Cervino ha scritto:Quindi hai problemi con la query :mario shirt ha scritto:
Rimane il solito problema: non esportabile ai colleghi coinvolti nella ricerca.. Mi puoi dire dove hai studiato il pgAdmin (in italiano..) magari succinto e non sul manuale ufficiale in inglese?
La scheda pain non so dove viene archiviata, ma utilizzando la semplice query postata in "query molto complessa" (mi sembra..) estae anche alcune voci della scheda pain. Puoi provare?
Mario
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , l.data_open As ev_d , pr_descr ||' , '|| Addenda As descriz , cp_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
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_problemi l ON p.codice = l.codice )
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' ) AND l.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , t.data_open , t.co_des , t.te_npezzi , t.po_des , t.co_atc , '2'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_terap t ON p.codice = t.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' )
AND l.pb_code = t.pb_code AND t.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , a.data_open , a.ac_des , a.ac_val , a.ac_tipo , '' , '3'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' )
AND l.pb_code = a.pb_code AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , d.data_open , d.de_descr , '' , '' , '' , '4'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_descriz d ON p.codice = d.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' )
AND l.pb_code = d.pb_code AND d.data_open IS NOT Null
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
sul mio MillepS MonoUtente sembra funzionare senza problemi ( ed i Pazienti non mancano in quanto con addenda ILIKE '%Don%' : ottengo tutte le registrazioni effettuate in un dato periodo in : Problemi , Accertamenti , Diario e Terapia per i Donatori di Sangue ; resta da capire ove siano archiviati i dati relativi alla scheda PAIN .
Sergio
Grazie Sergio,
ti spiego, e se puoi e vuoi, modifica la query spiegandomela.. Estrae bene la terapia e gli accertamenti meno la scheda Pain, ma sotto posologia se la riga corrisponde agli accertamenti vengono parti troncate dell'accertamento ( Rx, OR, RAD), nella colonna iCD9 referto viene il numero di confezioni dei medicinali o la risposta dell'accertamento, l'ultima colonna Nord a cosa si riferisce mi da numeri..
Ciao Mario
P.S. e' possibile sommare per paz i vari farmaci e dare il numero totale?
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: help progetto dono
Sergio come mai mi estrae solo i pazienti fino alla lettera C?
sul mio MillepS MonoUtente sembra funzionare senza problemi ( ed i Pazienti non mancano in quanto con addenda ILIKE '%Don%' : ottengo tutte le registrazioni effettuate in un dato periodo in : Problemi , Accertamenti , Diario e Terapia per i Donatori di Sangue ; resta da capire ove siano archiviati i dati relativi alla scheda PAIN .
Sergio
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: help progetto dono
Trovato !!! ho aumentato il limit da 150 a 400... OFFSET 0 cosa significa?mario shirt ha scritto:Sergio come mai mi estrae solo i pazienti fino alla lettera C?
sul mio MillepS MonoUtente sembra funzionare senza problemi ( ed i Pazienti non mancano in quanto con addenda ILIKE '%Don%' : ottengo tutte le registrazioni effettuate in un dato periodo in : Problemi , Accertamenti , Diario e Terapia per i Donatori di Sangue ; resta da capire ove siano archiviati i dati relativi alla scheda PAIN .
Sergio
Mario
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: help progetto dono
mario shirt ha scritto:Cervino ha scritto:
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' )
AND l.pb_code = a.pb_code AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , d.data_open , d.de_descr , '' , '' , '' , '4'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_descriz d ON p.codice = d.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' )
AND l.pb_code = d.pb_code AND d.data_open IS NOT Null
ORDER BY 1 , 2 , 11
LIMIT 150 OFFSET 0
sul mio MillepS MonoUtente sembra funzionare senza problemi ( ed i Pazienti non mancano in quanto con addenda ILIKE '%Don%' : ottengo tutte le registrazioni effettuate in un dato periodo in : Problemi , Accertamenti , Diario e Terapia per i Donatori di Sangue ; resta da capire ove siano archiviati i dati relativi alla scheda PAIN .
Sergio
Sergio tolto 'EO' dopo Not IN, mi estrae anche PAIN , i risultati pero' devono essere in allegato..
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Re: help progetto dono
Come hai già compreso LIMIT serve x limitare il numero di righe estrarre , OFFSET per escludere parte delle prime righe estratte( utile solo in fase di test della query , dopo la verifica del buon funzionamento della query si possono disattivare, inglobandole in * */
( /* LIMIT 150 OFFSET 0 */ ) o cancellare.
la clausola AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) serve appunto per verificare / includere / escludere eventuali tipi di Accertamento secondo le proprie esigenze, come hai già fatto .
Se un campo di una Tabella non serve ( ad es. posologia ) basta sostituirlo con '' , come pure alcune colonne utili x verificare / modifcare il set estratto .
Trattandosi di unire dati da Tabelle diverse in un' unica estrazione, inevitabilmente avro' colonne con dati di tipo diverso ; quindi ho ritenuto opportuno
ordinarli tramite l' ultima colonna, in modo da avere x ogni paziente prima il problema poi la terapia poi l' accertamento poi il diario, ordine modificabile a piacere cambiando i relativi numeri .
Anche la finestra data va eventualmente modificata e/o integrata , come ad es :
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , l.data_open As ev_d , pr_descr ||' , '|| Addenda As descriz , cp_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
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_problemi l ON p.codice = l.codice )
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' ) AND l.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , t.data_open , t.co_des , t.te_npezzi , t.po_des , t.co_atc , '2'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_terap t ON p.codice = t.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND t.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = t.pb_code AND t.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , a.data_open , a.ac_des , a.ac_val , a.ac_tipo , '' , '3'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND a.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = a.pb_code AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , d.data_open , d.de_descr , '' , '' , '' , '4'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_descriz d ON p.codice = d.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND d.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = d.pb_code AND d.data_open IS NOT Null
ORDER BY 1 , 2 , 11 , 7
LIMIT 150 OFFSET 0
Ciao , Sergio
( /* LIMIT 150 OFFSET 0 */ ) o cancellare.
la clausola AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) serve appunto per verificare / includere / escludere eventuali tipi di Accertamento secondo le proprie esigenze, come hai già fatto .
Se un campo di una Tabella non serve ( ad es. posologia ) basta sostituirlo con '' , come pure alcune colonne utili x verificare / modifcare il set estratto .
Trattandosi di unire dati da Tabelle diverse in un' unica estrazione, inevitabilmente avro' colonne con dati di tipo diverso ; quindi ho ritenuto opportuno
ordinarli tramite l' ultima colonna, in modo da avere x ogni paziente prima il problema poi la terapia poi l' accertamento poi il diario, ordine modificabile a piacere cambiando i relativi numeri .
Anche la finestra data va eventualmente modificata e/o integrata , come ad es :
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , l.data_open As ev_d , pr_descr ||' , '|| Addenda As descriz , cp_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
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_problemi l ON p.codice = l.codice )
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' ) AND l.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , t.data_open , t.co_des , t.te_npezzi , t.po_des , t.co_atc , '2'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_terap t ON p.codice = t.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND t.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = t.pb_code AND t.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , a.data_open , a.ac_des , a.ac_val , a.ac_tipo , '' , '3'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND a.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = a.pb_code AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , d.data_open , d.de_descr , '' , '' , '' , '4'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_descriz d ON p.codice = d.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND d.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = d.pb_code AND d.data_open IS NOT Null
ORDER BY 1 , 2 , 11 , 7
LIMIT 150 OFFSET 0
Ciao , 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: help progetto dono
Grazie mille Sergio,Cervino ha scritto: Come hai già compreso LIMIT serve x limitare il numero di righe estrarre , OFFSET per escludere parte delle prime righe estratte( utile solo in fase di test della query , dopo la verifica del buon funzionamento della query si possono disattivare, inglobandole in * */
( /* LIMIT 150 OFFSET 0 */ ) o cancellare.
la clausola AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) serve appunto per verificare / includere / escludere eventuali tipi di Accertamento secondo le proprie esigenze, come hai già fatto .
Se un campo di una Tabella non serve ( ad es. posologia ) basta sostituirlo con '' , come pure alcune colonne utili x verificare / modifcare il set estratto .
Trattandosi di unire dati da Tabelle diverse in un' unica estrazione, inevitabilmente avro' colonne con dati di tipo diverso ; quindi ho ritenuto opportuno
ordinarli tramite l' ultima colonna, in modo da avere x ogni paziente prima il problema poi la terapia poi l' accertamento poi il diario, ordine modificabile a piacere cambiando i relativi numeri .
Anche la finestra data va eventualmente modificata e/o integrata , come ad es :
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , l.data_open As ev_d , pr_descr ||' , '|| Addenda As descriz , cp_code As icd9_referto , '' As posologia , '' As act , Cast( '1' AS SmallInt) As n_ord
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_problemi l ON p.codice = l.codice )
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' ) AND l.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , t.data_open , t.co_des , t.te_npezzi , t.po_des , t.co_atc , '2'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_terap t ON p.codice = t.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND t.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = t.pb_code AND t.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , a.data_open , a.ac_des , a.ac_val , a.ac_tipo , '' , '3'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_accert a ON p.codice = a.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND a.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = a.pb_code AND a.ac_tipo NOT IN ( '00' , 'STI' , 'EO' , '_SG' ) AND a.data_open IS NOT Null
UNION
SELECT u.cognome||' '||u.nome As mmg , p.cognome , p.nome , p.nascita , p.sesso , Cast( Days( p.nascita , Today()+1)*24/8766 As SmallInt ) As eta , d.data_open , d.de_descr , '' , '' , '' , '4'
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_problemi l ON p.codice = l.codice ) LEFT Outer JOIN cart_descriz d ON p.codice = d.codice
WHERE u.nome ILIKE '%' AND p.pa_convenzione = 'S' AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between Date( Today())-365 And Today() And n.motivo_revoca = 'S')) And p.decesso Is Null
AND (( addenda ILIKE '%Dono%' AND addenda NOT ILIKE '%PseudoDono%' ) AND l.data_open Between '2015-01-01' And '2016-03-31' AND d.data_open Between '2015-01-01' And '2016-03-31')
AND l.pb_code = d.pb_code AND d.data_open IS NOT Null
ORDER BY 1 , 2 , 11 , 7
LIMIT 150 OFFSET 0
Ciao , Sergio
sei piu' utile di un manuale....Penso che questo forum sia indispensabile per capire e poter attuare alcune ricerche per proprio conto. Continuiamo a spiegare anche se per qualcuno sono banali alcune istruzioni..
(p.s. avevo capito come variare la data, ma non le tabelle e colonne.)
Ancora Grazie
Mario
mario shirt- Membro Junior
- Messaggi : 254
Punti : 5389
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 69
Argomenti simili
» Progetto Umbria.net
» Progetto Q-CHANNEL
» Estrazione progetto ASL
» LAP progetto diabete Campania
» Progetto Sperimentale sull'ADI
» Progetto Q-CHANNEL
» Estrazione progetto ASL
» LAP progetto diabete Campania
» Progetto Sperimentale sull'ADI
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.