FORUM PER UTENTI MILLEWIN
Attenzione !
Per intervenire sul forum è necessario essere registrati e connessi.

L'Amministratore

****************************************************
“Se tu hai una mela ed io ho una mela, e ce la scambiamo, alla fine tu ed io avremo sempre una mela ciascuno.
Ma se tu hai un’idea ed io ho un’idea, e ce la scambiamo, allora avremo entrambi due idee”.

George Bernard Shaw
****************************************************

help progetto dono

Vedere l'argomento precedente Vedere l'argomento seguente Andare in basso

help progetto dono

Messaggio  mario shirt il Ven 10 Mar 2017 - 18:43

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
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 237
Punti : 2873
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 62

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  Cervino il Sab 11 Mar 2017 - 10:26

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
Membro Junior

Messaggi : 202
Punti : 2734
Voti per importanza dei messaggi : 13
Data d'iscrizione : 03.03.11
Età : 63
Località : Orzivecchi (BS)

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  mario shirt il Sab 11 Mar 2017 - 12:33

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... Sad Sad
Cerchero' di capire dove sbaglio ad adattare le clausole, tanto c'e' sabato e domenica....
Eventualmente .. chiedo Aiuto...
Mario
Buon fine settimana
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 237
Punti : 2873
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 62

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  Cervino il Sab 11 Mar 2017 - 19:12

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

Cervino
Membro Junior
Membro Junior

Messaggi : 202
Punti : 2734
Voti per importanza dei messaggi : 13
Data d'iscrizione : 03.03.11
Età : 63
Località : Orzivecchi (BS)

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  mario shirt il Dom 12 Mar 2017 - 15:12

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
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 237
Punti : 2873
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 62

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  Cervino il Dom 12 Mar 2017 - 20:53

%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
evidentemente forse abbiamo schemi di MillePS diversi ( il mio è un old 13.38 ) ; l' assunto di base è :

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
Membro Junior

Messaggi : 202
Punti : 2734
Voti per importanza dei messaggi : 13
Data d'iscrizione : 03.03.11
Età : 63
Località : Orzivecchi (BS)

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  mario shirt il Dom 12 Mar 2017 - 21:36

Cervino ha scritto:
%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
evidentemente forse abbiamo schemi di MillePS diversi ( il mio è un old 13.38 ) ; l' assunto di base è :

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
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 237
Punti : 2873
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 62

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  Cervino il Dom 12 Mar 2017 - 22:44

Dmario 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
Grazie per le prove e Delucidazioni ; Non implementare , almeno come sembra in MW 13.38, l' utilizzo delle   
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
Membro Junior

Messaggi : 202
Punti : 2734
Voti per importanza dei messaggi : 13
Data d'iscrizione : 03.03.11
Età : 63
Località : Orzivecchi (BS)

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  mario shirt il Mar 14 Mar 2017 - 13:18

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...
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 237
Punti : 2873
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 62

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  Cervino il Mar 14 Mar 2017 - 23:42

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...
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 .
 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
Membro Junior

Messaggi : 202
Punti : 2734
Voti per importanza dei messaggi : 13
Data d'iscrizione : 03.03.11
Età : 63
Località : Orzivecchi (BS)

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  mario shirt il Mer 15 Mar 2017 - 16:08

Cervino ha scritto:
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...
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 .
 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
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 237
Punti : 2873
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 62

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  Cervino il Gio 16 Mar 2017 - 7:44

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
Quindi hai problemi con la query :




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
Membro Junior

Messaggi : 202
Punti : 2734
Voti per importanza dei messaggi : 13
Data d'iscrizione : 03.03.11
Età : 63
Località : Orzivecchi (BS)

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  mario shirt il Gio 16 Mar 2017 - 14:36

Cervino ha scritto:
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
Quindi hai problemi con la query :




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?
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 237
Punti : 2873
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 62

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  mario shirt il Gio 16 Mar 2017 - 14:45



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 come mai mi estrae solo i pazienti fino alla lettera C?
Mario
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 237
Punti : 2873
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 62

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  mario shirt il Gio 16 Mar 2017 - 14:47

mario shirt ha scritto:


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 come mai mi estrae solo i pazienti fino alla lettera C?
Mario
  Trovato !!! ho aumentato il limit da 150 a 400... OFFSET 0 cosa significa?
Mario
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 237
Punti : 2873
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 62

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  mario shirt il Gio 16 Mar 2017 - 15:02

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..
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 237
Punti : 2873
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 62

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  Cervino il Ven 17 Mar 2017 - 8:01

 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

Cervino
Membro Junior
Membro Junior

Messaggi : 202
Punti : 2734
Voti per importanza dei messaggi : 13
Data d'iscrizione : 03.03.11
Età : 63
Località : Orzivecchi (BS)

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  mario shirt il Ven 17 Mar 2017 - 9:33

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
Grazie mille 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
avatar
mario shirt
Membro Junior
Membro Junior

Messaggi : 237
Punti : 2873
Voti per importanza dei messaggi : 4
Data d'iscrizione : 21.02.11
Età : 62

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: help progetto dono

Messaggio  Contenuto sponsorizzato


Contenuto sponsorizzato


Tornare in alto Andare in basso

Vedere l'argomento precedente Vedere l'argomento seguente Tornare in alto

- Argomenti simili

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