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

statistiche influenza

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

statistiche influenza

Messaggio  filippo il Sab 12 Nov 2016 - 19:51

E' possibile con POSTGRES ricercare chi si è vaccinato nel 2015 ma  non si è vaccinato nel 2016?

filippo
Membro Junior
Membro Junior

Messaggi : 277
Punti : 2923
Voti per importanza dei messaggi : 3
Data d'iscrizione : 25.02.11

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: statistiche influenza

Messaggio  Cervino il Mar 15 Nov 2016 - 0:59

filippo ha scritto:E' possibile con POSTGRES ricercare chi si è vaccinato nel 2015 ma  non si è vaccinato nel 2016?

Io utilizzo la seguente query per la verifica ( MW 13.38 ) , adattata dallo scorso anno :

SELECT Distinct    Cast( p.cognome As Char(20)) ,  p.nome ,   Cast( DateFormat( Max( p.nascita), 'yyyy/mm/dd' ) As Char(16))  As Nascita ,    p.sesso ,     
Cast( Extract( YEAR From AGE( p.nascita ))||'y'||Extract( MONTH From AGE( p.nascita ))||'m'||Extract( Day From AGE( p.nascita ))||'d' As Char(12))  As  eta ,         Cast( p.codice_fiscale As Char(16))  As  codfisc_paz , 

Cast( DateFormat( Max( v.va_data), 'yyyy/mm/dd' ) As Char(16))   As  Influ_d ,  
(Select v.va_data From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31' And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid )))) _Influ_d1_ ,
Max( v.va_tipo)  As  vaccino ,  Max( v.ora)   As  cat_code ,
( CASE  Coalesce( Left( Max( v.ora) , 1 ),'')    WHEN  'V'  THEN   ( CASE Max( v.ora)
WHEN  'VA1'  THEN  'Personale sanitario e socio-sanitario'
WHEN  'VA2'  THEN  'Personale delle forze di pubblica sicurezza e della protezione civile'
WHEN  'VA3'  THEN  'Personale del corpo dei Vigili del fuoco Ministero Interno'
WHEN  'VA4'  THEN  'Personale delle forze armate'
WHEN  'VA5'  THEN  'Personale che assicura i servizi pubblici essenziali'
WHEN  'VA6'  THEN  'Donatori di sangue periodici'
WHEN  'VB1'  THEN  'Donne al secondo o al terzo trimestre di gravidanza'
WHEN  'VB2'  THEN  'Donne che hanno partorito da meno di sei mesi o persona che assiste il bambino'
WHEN  'VC1'  THEN  'Portatori di almeno una delle condizioni di rischio di età compresa tra 6 mesi e 65 anni'
WHEN  'VD1'  THEN  'Bambini di età superiore a sei mesi che frequentano l''asilo nido (non incluse nei precedenti punti)'
WHEN  'VD2'  THEN  'Minori che vivono in comunità o istituzionalizzati (non incluse nei precedenti punti)'
WHEN  'VD3'  THEN  'Soggetti con meno di 24 mesi nati gravemente pretermine'
WHEN  'VE1'  THEN  'Persone di età compresa tra 6 mesi e 17 anni (non incluse nei precedenti punti)'
WHEN  'VF1'  THEN  'Persone di età compresa tra 18 e 27 anni (non incluse nei precedenti punti)'
ELSE Max( v.ora) || ' - Altra categoria'   END)
WHEN  'B'  THEN  ( CASE  Max( v.ora)
WHEN  'B9 '  THEN  'Anziani over 65'
WHEN  'B33'  THEN  'Bambini mal. neurologiche o neuromuscolari'
WHEN  'B32'  THEN  'Mal. con immunodepressione'
WHEN  'B31'  THEN  'Patologie con programmati interventi chirurgici'
WHEN  'B30'  THEN  'Sindrome da malassorbimento intestinale'
WHEN  'B29'  THEN  'Mal.organi emopoietici ed emoglobinopatie'
WHEN  'B28'  THEN  'Mal. renali con Insuff. Renale'
WHEN  'B27'  THEN  'Mal. Tumorali'
WHEN  'B26'  THEN  'Diabete mellito e mal. Metaboliche'
WHEN  'B25'  THEN  'Mal. apparato cardiocircolatorio'
WHEN  'B24'  THEN  'Mal. croniche app. respiratorio'
WHEN  'B23'  THEN  'a pagamento'
WHEN  'B22'  THEN  'Allevatori, Veterinari, ecc.'
WHEN  'B21'  THEN  'Addetti a servizi pubblici di primario interesse collettivo'
WHEN  'B20'  THEN  'Contatti familiari di soggetti ad alto rischio'
WHEN  'B19'  THEN  'Medici e personale sanitario'
WHEN  'B18'  THEN  'Ricoverati presso strutture di lungodegenza'
WHEN  'B17'  THEN  'Donne in gravidanza'
WHEN  'B16'  THEN  'Bambini pretermine'
WHEN  'B15'  THEN  'Bambini e adolescenti in trattamento cronico con ASA'
WHEN  'B14'  THEN  'Altre malattie'
WHEN  'B13'  THEN  'HIV'
WHEN  'B12'  THEN  'Broncopneumopatici'
WHEN  'B11'  THEN  'Cardiopatici'
WHEN  'B10'  THEN  'Diabetici'
ELSE  Max( v.ora) || ' - Altra categoria'  END)
WHEN  'H'  THEN   ( CASE  Max( v.ora)
WHEN  'HNF'  THEN  'f) Persone tra i 18 e 27 anni, non incluse nei precedenti punti'
WHEN  'HNE'  THEN  'e) Persone di età compresa tra piu'' di 6 mesi e 17 anni, non incluse nei precedenti punti, sulla base degli aggiornamenti della scheda tecnica autorizzativa EMEA.'
WHEN  'HND'  THEN  'd) Bambini di età superiore a 6 mesi che frequentano asilo nido; minori che vivono in comunità o istituzionalizzati.'
WHEN  'HNC'  THEN  'c) Portatori di almeno una delle condizioni di rischio, di cui al comma 2 art. 1 Ord 11-09-2009, nonchÈ i soggetti fino a 24 mesi nati gravemente pretermine'
WHEN  'HNB'  THEN  'b) Donne al secondo o al terzo trimestre di gravidanza: donne che hanno partorito da meno di 6 mesi o, in loro assenza, la persona che assiste il bambino in maniera continuativa'
WHEN  'HNA'  THEN  'a) Pers. san. e socio-san.: PS e PC,: VVFF del Min. interno; FFAA; servizi pubbl. essenz. L. 12/6/90 n. 8146. e succ. mod. piani di continuità datori di lavoro, donatori di sangue ecc.'
ELSE  Max( v.ora)  || ' - Altra categoria'  END)
WHEN  'A'  THEN   (CASE  Max( v.ora)
WHEN  'A29'  THEN  'Affetti da: Pat. ass. ad un aumentato rischio di aspirazione delle secrezioni respiratorie (es. m. neuromuscolari)'
WHEN  'A28'  THEN  'Affetti da: Pat. per le quali sono programmati interventi chirurgici'
WHEN  'A27'  THEN  'Affetti da: M. infiammatorie croniche e s. di malassorbimento intestinali'
WHEN  'A26'  THEN  'Affetti da: M. cong. o acquisite che comportino carenze prod. anticorpi, immunosoppressione da farmaci o da HIV'
WHEN  'A25'  THEN  'Affetti da: Tumori'
WHEN  'A24'  THEN  'Affetti da: M. degli organi emopoietici ed emoglobinopatie'
WHEN  'A23'  THEN  'Affetti da: M. renali con influenza renale'
WHEN  'A22'  THEN  'Affetti da: Diabete mellito ed altre malattie metaboliche'
WHEN  'A21'  THEN  'Affetti da: M. apparato cardio-circolatorio, comprese cardiopatie cong. e acquisite'
WHEN  'A20'  THEN  'Affetti da: M. croniche apparato respiratorio (incl. Asma, displasia bronc., fibrosi cistica e BPCO)'
WHEN  'A13'  THEN  'Categoria non nota'
WHEN  'A12'  THEN  'Soggetti ad alto rischio'
WHEN  'A11'  THEN  'Donne che saranno nel secondo e terzo trimestre di gravidanza a inizio stagione epidemica'
WHEN  'A10'  THEN  'Personale che, per motivi di lavoro, è a contatto con animali che potrebbero costituire fonte di infezione da virus influenzali non umani'
WHEN  'A09'  THEN  'Familiari e contatti di soggetti ad alto rischio'
WHEN  'A08'  THEN  'Bambini affetti da patologie neurologiche e neuromuscolari'
WHEN  'A07'  THEN  'Bambini ed adolescenti in trattamento a lungo termine con Acido Acetilsalicilico, a rischio di sindrome di Reye in caso di infezione influenzale'
WHEN  'A06'  THEN  'Bambini di età superiore ai 6 mesi con condizioni morbose predisponenti alle complicanze'
WHEN  'A05'  THEN  'Soggetti addetti a servizi pubblici di primario interesse collettivo e categorie di lavoratori'
WHEN  'A04'  THEN  'Individui di qualunque età ricoverati presso strutture per lungodegenti'
WHEN  'A03'  THEN  'Medici e personale sanitario di assistenza'
WHEN  'A02'  THEN  'Adulti affetti da patologie croniche'
WHEN  'A01'  THEN  'Soggetti di età pari o superiore a 65 anni'
ELSE  Max( v.ora) || ' - Altra categoria'  END )  ELSE  NULL  END )  As  categoria_rischio ,  
Case  WHEN   Trim( Left( Max( v.va_note), Position( 'I ' in '  I     T2DM' )))  = 'I'   THEN   'INFLUVAC'  
WHEN    Trim( Left( Max( v.va_note), Position( 'I ' in '  I     T2DM' )))  =  'F'   THEN  'FLUAD'   ELSE   NULL  END  As  tipo_vaccino ,   Max( v.va_note) As Patologia ,
Case  Max( fatto_io)  WHEN   'D'   THEN   ' in Office'   WHEN   'E'   THEN   ' Domicilio'   WHEN   'F'   THEN   ' in RSA'      WHEN   'A'   THEN   ' Priv  in Office'   WHEN   'B'   THEN   ' Priv  Domicilio'   WHEN   'C'   THEN   ' Priv  in RSA'   ELSE   Max( fatto_io)   END  As  sede ,
Trim( Left( v.lotto ,  Position( '  ' in v.lotto)-1 )) As  lotto ,     Left( '20', 2) || SubString( v.lotto From Length( v.lotto )-5 For 2 ) || '-' || SubString( v.lotto From Length( v.lotto )-3 For 2 ) ||'-' || Right( lotto, 2 )  As  scadenza_lotto    /*  Trim( Right( lotto , Position( ' ' in v.lotto)-1  ))  As  scadenza_lotto  */ ,
(Select Cast( Count( e.motese) As SmallInt) From cart_paz_ese e Where e.codice = p.codice )
   _esenzioni_n1_ ,
(Select Cast( Count( e.motese) As SmallInt) From cart_paz_ese e Where e.codice = p.codice And ( dscdese Is Null Or dscdese > '2015-12-31' ) And ( e.motese Not ILike '%Reddito%' AND e.motese Not ILike '%lavor%' AND e.motese Not ILike '%Inval%'))
   _esenzioni_n_ ,
Array_To_String( Array( Select e.motese From cart_paz_ese e Where e.codice = p.codice And (( dscdese Is Null Or dscdese > '2015-12-31' ) And ( e.motese Not ILike '%Reddito%' AND e.motese Not ILike '%lavor%' AND e.motese Not ILike '%Inval%'))) , ' ,')      _esenzioni_tipo_ ,            u.codice_fiscale   As   cod_fisc_mmg
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_vaccini v    ON    v.codice = p.codice
WHERE     u.nome  ILike  '%'            AND     u.codice_regionale   ILIKE   '%'
AND    p.pa_convenzione = 'S'        AND     sesso   ILIKE   '%' 
AND    Days( p.nascita, '2017/01/01')*24/8766  <  105        AND    v.va_tipo   ILIKE   '%Influ%'  
AND    ( v.va_data   BETWEEN  '2015-10-01'   AND  '2015-12-31'     /*  AND  v.ora   NOT ILIKE  'A13'  */
And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
                     AND  p.codice  NOT IN
(Select v.codice From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31' And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
GROUP BY   u.codice_fiscale ,  p.codice_fiscale ,  p.cognome ,  p.nome ,  p.nascita , p.sesso ,  p.codice ,  v.lotto
ORDER BY  1 , 2 , 7 desc  , 3  , 4


Disattivare le colonne superflue e/o obsolete inglobandole in  /*   */
Saluti ,  Sergio

Cervino
Membro Junior
Membro Junior

Messaggi : 201
Punti : 2732
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: statistiche influenza

Messaggio  filippo il Mar 15 Nov 2016 - 8:45

Cervino ha scritto:
filippo ha scritto:E' possibile con POSTGRES ricercare chi si è vaccinato nel 2015 ma  non si è vaccinato nel 2016?

Io utilizzo la seguente query per la verifica ( MW 13.38 ) , adattata dallo scorso anno :

SELECT Distinct    Cast( p.cognome As Char(20)) ,  p.nome ,   Cast( DateFormat( Max( p.nascita), 'yyyy/mm/dd' ) As Char(16))  As Nascita ,    p.sesso ,     
Cast( Extract( YEAR From AGE( p.nascita ))||'y'||Extract( MONTH From AGE( p.nascita ))||'m'||Extract( Day From AGE( p.nascita ))||'d' As Char(12))  As  eta ,         Cast( p.codice_fiscale As Char(16))  As  codfisc_paz , 

Cast( DateFormat( Max( v.va_data), 'yyyy/mm/dd' ) As Char(16))   As  Influ_d ,  
(Select v.va_data From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31' And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid )))) _Influ_d1_ ,
Max( v.va_tipo)  As  vaccino ,  Max( v.ora)   As  cat_code ,
( CASE  Coalesce( Left( Max( v.ora) , 1 ),'')    WHEN  'V'  THEN   ( CASE Max( v.ora)
WHEN  'VA1'  THEN  'Personale sanitario e socio-sanitario'
WHEN  'VA2'  THEN  'Personale delle forze di pubblica sicurezza e della protezione civile'
WHEN  'VA3'  THEN  'Personale del corpo dei Vigili del fuoco Ministero Interno'
WHEN  'VA4'  THEN  'Personale delle forze armate'
WHEN  'VA5'  THEN  'Personale che assicura i servizi pubblici essenziali'
WHEN  'VA6'  THEN  'Donatori di sangue periodici'
WHEN  'VB1'  THEN  'Donne al secondo o al terzo trimestre di gravidanza'
WHEN  'VB2'  THEN  'Donne che hanno partorito da meno di sei mesi o persona che assiste il bambino'
WHEN  'VC1'  THEN  'Portatori di almeno una delle condizioni di rischio di età compresa tra 6 mesi e 65 anni'
WHEN  'VD1'  THEN  'Bambini di età superiore a sei mesi che frequentano l''asilo nido (non incluse nei precedenti punti)'
WHEN  'VD2'  THEN  'Minori che vivono in comunità o istituzionalizzati (non incluse nei precedenti punti)'
WHEN  'VD3'  THEN  'Soggetti con meno di 24 mesi nati gravemente pretermine'
WHEN  'VE1'  THEN  'Persone di età compresa tra 6 mesi e 17 anni (non incluse nei precedenti punti)'
WHEN  'VF1'  THEN  'Persone di età compresa tra 18 e 27 anni (non incluse nei precedenti punti)'
ELSE Max( v.ora) || ' - Altra categoria'   END)
WHEN  'B'  THEN  ( CASE  Max( v.ora)
WHEN  'B9 '  THEN  'Anziani over 65'
WHEN  'B33'  THEN  'Bambini mal. neurologiche o neuromuscolari'
WHEN  'B32'  THEN  'Mal. con immunodepressione'
WHEN  'B31'  THEN  'Patologie con programmati interventi chirurgici'
WHEN  'B30'  THEN  'Sindrome da malassorbimento intestinale'
WHEN  'B29'  THEN  'Mal.organi emopoietici ed emoglobinopatie'
WHEN  'B28'  THEN  'Mal. renali con Insuff. Renale'
WHEN  'B27'  THEN  'Mal. Tumorali'
WHEN  'B26'  THEN  'Diabete mellito e mal. Metaboliche'
WHEN  'B25'  THEN  'Mal. apparato cardiocircolatorio'
WHEN  'B24'  THEN  'Mal. croniche app. respiratorio'
WHEN  'B23'  THEN  'a pagamento'
WHEN  'B22'  THEN  'Allevatori, Veterinari, ecc.'
WHEN  'B21'  THEN  'Addetti a servizi pubblici di primario interesse collettivo'
WHEN  'B20'  THEN  'Contatti familiari di soggetti ad alto rischio'
WHEN  'B19'  THEN  'Medici e personale sanitario'
WHEN  'B18'  THEN  'Ricoverati presso strutture di lungodegenza'
WHEN  'B17'  THEN  'Donne in gravidanza'
WHEN  'B16'  THEN  'Bambini pretermine'
WHEN  'B15'  THEN  'Bambini e adolescenti in trattamento cronico con ASA'
WHEN  'B14'  THEN  'Altre malattie'
WHEN  'B13'  THEN  'HIV'
WHEN  'B12'  THEN  'Broncopneumopatici'
WHEN  'B11'  THEN  'Cardiopatici'
WHEN  'B10'  THEN  'Diabetici'
ELSE  Max( v.ora) || ' - Altra categoria'  END)
WHEN  'H'  THEN   ( CASE  Max( v.ora)
WHEN  'HNF'  THEN  'f) Persone tra i 18 e 27 anni, non incluse nei precedenti punti'
WHEN  'HNE'  THEN  'e) Persone di età compresa tra piu'' di 6 mesi e 17 anni, non incluse nei precedenti punti, sulla base degli aggiornamenti della scheda tecnica autorizzativa EMEA.'
WHEN  'HND'  THEN  'd) Bambini di età superiore a 6 mesi che frequentano asilo nido; minori che vivono in comunità o istituzionalizzati.'
WHEN  'HNC'  THEN  'c) Portatori di almeno una delle condizioni di rischio, di cui al comma 2 art. 1 Ord 11-09-2009, nonchÈ i soggetti fino a 24 mesi nati gravemente pretermine'
WHEN  'HNB'  THEN  'b) Donne al secondo o al terzo trimestre di gravidanza: donne che hanno partorito da meno di 6 mesi o, in loro assenza, la persona che assiste il bambino in maniera continuativa'
WHEN  'HNA'  THEN  'a) Pers. san. e socio-san.: PS e PC,: VVFF del Min. interno; FFAA; servizi pubbl. essenz. L. 12/6/90 n. 8146. e succ. mod. piani di continuità datori di lavoro, donatori di sangue ecc.'
ELSE  Max( v.ora)  || ' - Altra categoria'  END)
WHEN  'A'  THEN   (CASE  Max( v.ora)
WHEN  'A29'  THEN  'Affetti da: Pat. ass. ad un aumentato rischio di aspirazione delle secrezioni respiratorie (es. m. neuromuscolari)'
WHEN  'A28'  THEN  'Affetti da: Pat. per le quali sono programmati interventi chirurgici'
WHEN  'A27'  THEN  'Affetti da: M. infiammatorie croniche e s. di malassorbimento intestinali'
WHEN  'A26'  THEN  'Affetti da: M. cong. o acquisite che comportino carenze prod. anticorpi, immunosoppressione da farmaci o da HIV'
WHEN  'A25'  THEN  'Affetti da: Tumori'
WHEN  'A24'  THEN  'Affetti da: M. degli organi emopoietici ed emoglobinopatie'
WHEN  'A23'  THEN  'Affetti da: M. renali con influenza renale'
WHEN  'A22'  THEN  'Affetti da: Diabete mellito ed altre malattie metaboliche'
WHEN  'A21'  THEN  'Affetti da: M. apparato cardio-circolatorio, comprese cardiopatie cong. e acquisite'
WHEN  'A20'  THEN  'Affetti da: M. croniche apparato respiratorio (incl. Asma, displasia bronc., fibrosi cistica e BPCO)'
WHEN  'A13'  THEN  'Categoria non nota'
WHEN  'A12'  THEN  'Soggetti ad alto rischio'
WHEN  'A11'  THEN  'Donne che saranno nel secondo e terzo trimestre di gravidanza a inizio stagione epidemica'
WHEN  'A10'  THEN  'Personale che, per motivi di lavoro, è a contatto con animali che potrebbero costituire fonte di infezione da virus influenzali non umani'
WHEN  'A09'  THEN  'Familiari e contatti di soggetti ad alto rischio'
WHEN  'A08'  THEN  'Bambini affetti da patologie neurologiche e neuromuscolari'
WHEN  'A07'  THEN  'Bambini ed adolescenti in trattamento a lungo termine con Acido Acetilsalicilico, a rischio di sindrome di Reye in caso di infezione influenzale'
WHEN  'A06'  THEN  'Bambini di età superiore ai 6 mesi con condizioni morbose predisponenti alle complicanze'
WHEN  'A05'  THEN  'Soggetti addetti a servizi pubblici di primario interesse collettivo e categorie di lavoratori'
WHEN  'A04'  THEN  'Individui di qualunque età ricoverati presso strutture per lungodegenti'
WHEN  'A03'  THEN  'Medici e personale sanitario di assistenza'
WHEN  'A02'  THEN  'Adulti affetti da patologie croniche'
WHEN  'A01'  THEN  'Soggetti di età pari o superiore a 65 anni'
ELSE  Max( v.ora) || ' - Altra categoria'  END )  ELSE  NULL  END )  As  categoria_rischio ,  
Case  WHEN   Trim( Left( Max( v.va_note), Position( 'I ' in '  I     T2DM' )))  = 'I'   THEN   'INFLUVAC'  
WHEN    Trim( Left( Max( v.va_note), Position( 'I ' in '  I     T2DM' )))  =  'F'   THEN  'FLUAD'   ELSE   NULL  END  As  tipo_vaccino ,   Max( v.va_note) As Patologia ,
Case  Max( fatto_io)  WHEN   'D'   THEN   ' in Office'   WHEN   'E'   THEN   ' Domicilio'   WHEN   'F'   THEN   ' in RSA'      WHEN   'A'   THEN   ' Priv  in Office'   WHEN   'B'   THEN   ' Priv  Domicilio'   WHEN   'C'   THEN   ' Priv  in RSA'   ELSE   Max( fatto_io)   END  As  sede ,
Trim( Left( v.lotto ,  Position( '  ' in v.lotto)-1 )) As  lotto ,     Left( '20', 2) || SubString( v.lotto From Length( v.lotto )-5 For 2 ) || '-' || SubString( v.lotto From Length( v.lotto )-3 For 2 ) ||'-' || Right( lotto, 2 )  As  scadenza_lotto    /*  Trim( Right( lotto , Position( ' ' in v.lotto)-1  ))  As  scadenza_lotto  */ ,
(Select Cast( Count( e.motese) As SmallInt) From cart_paz_ese e Where e.codice = p.codice )
   _esenzioni_n1_ ,
(Select Cast( Count( e.motese) As SmallInt) From cart_paz_ese e Where e.codice = p.codice And ( dscdese Is Null Or dscdese > '2015-12-31' ) And ( e.motese Not ILike '%Reddito%' AND e.motese Not ILike '%lavor%' AND e.motese Not ILike '%Inval%'))
   _esenzioni_n_ ,
Array_To_String( Array( Select e.motese From cart_paz_ese e Where e.codice = p.codice And (( dscdese Is Null Or dscdese > '2015-12-31' ) And ( e.motese Not ILike '%Reddito%' AND e.motese Not ILike '%lavor%' AND e.motese Not ILike '%Inval%'))) , ' ,')      _esenzioni_tipo_ ,            u.codice_fiscale   As   cod_fisc_mmg
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_vaccini v    ON    v.codice = p.codice
WHERE     u.nome  ILike  '%'            AND     u.codice_regionale   ILIKE   '%'
AND    p.pa_convenzione = 'S'        AND     sesso   ILIKE   '%' 
AND    Days( p.nascita, '2017/01/01')*24/8766  <  105        AND    v.va_tipo   ILIKE   '%Influ%'  
AND    ( v.va_data   BETWEEN  '2015-10-01'   AND  '2015-12-31'     /*  AND  v.ora   NOT ILIKE  'A13'  */
And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
                     AND  p.codice  NOT IN
(Select v.codice From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31' And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
GROUP BY   u.codice_fiscale ,  p.codice_fiscale ,  p.cognome ,  p.nome ,  p.nascita , p.sesso ,  p.codice ,  v.lotto
ORDER BY  1 , 2 , 7 desc  , 3  , 4


Disattivare le colonne superflue e/o obsolete inglobandole in  /*   */
Saluti ,  Sergio


Perfetta, estrae anche i deceduti  e i pazienti non piu' in carico ma non è un problema!
Grazie

filippo
Membro Junior
Membro Junior

Messaggi : 277
Punti : 2923
Voti per importanza dei messaggi : 3
Data d'iscrizione : 25.02.11

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: statistiche influenza

Messaggio  Cervino il Mar 15 Nov 2016 - 23:49

filippo ha scritto:
Cervino ha scritto:
filippo ha scritto:E' possibile con POSTGRES ricercare chi si è vaccinato nel 2015 ma  non si è vaccinato nel 2016?

Io utilizzo la seguente query per la verifica ( MW 13.38 ) , adattata dallo scorso anno :

SELECT Distinct    Cast( p.cognome As Char(20)) ,  p.nome ,   Cast( DateFormat( Max( p.nascita), 'yyyy/mm/dd' ) As Char(16))  As Nascita ,    p.sesso ,     
Cast( Extract( YEAR From AGE( p.nascita ))||'y'||Extract( MONTH From AGE( p.nascita ))||'m'||Extract( Day From AGE( p.nascita ))||'d' As Char(12))  As  eta ,         Cast( p.codice_fiscale As Char(16))  As  codfisc_paz , 

Cast( DateFormat( Max( v.va_data), 'yyyy/mm/dd' ) As Char(16))   As  Influ_d ,  
(Select v.va_data From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31' And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid )))) _Influ_d1_ ,
Max( v.va_tipo)  As  vaccino ,  Max( v.ora)   As  cat_code ,
( CASE  Coalesce( Left( Max( v.ora) , 1 ),'')    WHEN  'V'  THEN   ( CASE Max( v.ora)
WHEN  'VA1'  THEN  'Personale sanitario e socio-sanitario'
WHEN  'VA2'  THEN  'Personale delle forze di pubblica sicurezza e della protezione civile'
WHEN  'VA3'  THEN  'Personale del corpo dei Vigili del fuoco Ministero Interno'
WHEN  'VA4'  THEN  'Personale delle forze armate'
WHEN  'VA5'  THEN  'Personale che assicura i servizi pubblici essenziali'
WHEN  'VA6'  THEN  'Donatori di sangue periodici'
WHEN  'VB1'  THEN  'Donne al secondo o al terzo trimestre di gravidanza'
WHEN  'VB2'  THEN  'Donne che hanno partorito da meno di sei mesi o persona che assiste il bambino'
WHEN  'VC1'  THEN  'Portatori di almeno una delle condizioni di rischio di età compresa tra 6 mesi e 65 anni'
WHEN  'VD1'  THEN  'Bambini di età superiore a sei mesi che frequentano l''asilo nido (non incluse nei precedenti punti)'
WHEN  'VD2'  THEN  'Minori che vivono in comunità o istituzionalizzati (non incluse nei precedenti punti)'
WHEN  'VD3'  THEN  'Soggetti con meno di 24 mesi nati gravemente pretermine'
WHEN  'VE1'  THEN  'Persone di età compresa tra 6 mesi e 17 anni (non incluse nei precedenti punti)'
WHEN  'VF1'  THEN  'Persone di età compresa tra 18 e 27 anni (non incluse nei precedenti punti)'
ELSE Max( v.ora) || ' - Altra categoria'   END)
WHEN  'B'  THEN  ( CASE  Max( v.ora)
WHEN  'B9 '  THEN  'Anziani over 65'
WHEN  'B33'  THEN  'Bambini mal. neurologiche o neuromuscolari'
WHEN  'B32'  THEN  'Mal. con immunodepressione'
WHEN  'B31'  THEN  'Patologie con programmati interventi chirurgici'
WHEN  'B30'  THEN  'Sindrome da malassorbimento intestinale'
WHEN  'B29'  THEN  'Mal.organi emopoietici ed emoglobinopatie'
WHEN  'B28'  THEN  'Mal. renali con Insuff. Renale'
WHEN  'B27'  THEN  'Mal. Tumorali'
WHEN  'B26'  THEN  'Diabete mellito e mal. Metaboliche'
WHEN  'B25'  THEN  'Mal. apparato cardiocircolatorio'
WHEN  'B24'  THEN  'Mal. croniche app. respiratorio'
WHEN  'B23'  THEN  'a pagamento'
WHEN  'B22'  THEN  'Allevatori, Veterinari, ecc.'
WHEN  'B21'  THEN  'Addetti a servizi pubblici di primario interesse collettivo'
WHEN  'B20'  THEN  'Contatti familiari di soggetti ad alto rischio'
WHEN  'B19'  THEN  'Medici e personale sanitario'
WHEN  'B18'  THEN  'Ricoverati presso strutture di lungodegenza'
WHEN  'B17'  THEN  'Donne in gravidanza'
WHEN  'B16'  THEN  'Bambini pretermine'
WHEN  'B15'  THEN  'Bambini e adolescenti in trattamento cronico con ASA'
WHEN  'B14'  THEN  'Altre malattie'
WHEN  'B13'  THEN  'HIV'
WHEN  'B12'  THEN  'Broncopneumopatici'
WHEN  'B11'  THEN  'Cardiopatici'
WHEN  'B10'  THEN  'Diabetici'
ELSE  Max( v.ora) || ' - Altra categoria'  END)
WHEN  'H'  THEN   ( CASE  Max( v.ora)
WHEN  'HNF'  THEN  'f) Persone tra i 18 e 27 anni, non incluse nei precedenti punti'
WHEN  'HNE'  THEN  'e) Persone di età compresa tra piu'' di 6 mesi e 17 anni, non incluse nei precedenti punti, sulla base degli aggiornamenti della scheda tecnica autorizzativa EMEA.'
WHEN  'HND'  THEN  'd) Bambini di età superiore a 6 mesi che frequentano asilo nido; minori che vivono in comunità o istituzionalizzati.'
WHEN  'HNC'  THEN  'c) Portatori di almeno una delle condizioni di rischio, di cui al comma 2 art. 1 Ord 11-09-2009, nonchÈ i soggetti fino a 24 mesi nati gravemente pretermine'
WHEN  'HNB'  THEN  'b) Donne al secondo o al terzo trimestre di gravidanza: donne che hanno partorito da meno di 6 mesi o, in loro assenza, la persona che assiste il bambino in maniera continuativa'
WHEN  'HNA'  THEN  'a) Pers. san. e socio-san.: PS e PC,: VVFF del Min. interno; FFAA; servizi pubbl. essenz. L. 12/6/90 n. 8146. e succ. mod. piani di continuità datori di lavoro, donatori di sangue ecc.'
ELSE  Max( v.ora)  || ' - Altra categoria'  END)
WHEN  'A'  THEN   (CASE  Max( v.ora)
WHEN  'A29'  THEN  'Affetti da: Pat. ass. ad un aumentato rischio di aspirazione delle secrezioni respiratorie (es. m. neuromuscolari)'
WHEN  'A28'  THEN  'Affetti da: Pat. per le quali sono programmati interventi chirurgici'
WHEN  'A27'  THEN  'Affetti da: M. infiammatorie croniche e s. di malassorbimento intestinali'
WHEN  'A26'  THEN  'Affetti da: M. cong. o acquisite che comportino carenze prod. anticorpi, immunosoppressione da farmaci o da HIV'
WHEN  'A25'  THEN  'Affetti da: Tumori'
WHEN  'A24'  THEN  'Affetti da: M. degli organi emopoietici ed emoglobinopatie'
WHEN  'A23'  THEN  'Affetti da: M. renali con influenza renale'
WHEN  'A22'  THEN  'Affetti da: Diabete mellito ed altre malattie metaboliche'
WHEN  'A21'  THEN  'Affetti da: M. apparato cardio-circolatorio, comprese cardiopatie cong. e acquisite'
WHEN  'A20'  THEN  'Affetti da: M. croniche apparato respiratorio (incl. Asma, displasia bronc., fibrosi cistica e BPCO)'
WHEN  'A13'  THEN  'Categoria non nota'
WHEN  'A12'  THEN  'Soggetti ad alto rischio'
WHEN  'A11'  THEN  'Donne che saranno nel secondo e terzo trimestre di gravidanza a inizio stagione epidemica'
WHEN  'A10'  THEN  'Personale che, per motivi di lavoro, è a contatto con animali che potrebbero costituire fonte di infezione da virus influenzali non umani'
WHEN  'A09'  THEN  'Familiari e contatti di soggetti ad alto rischio'
WHEN  'A08'  THEN  'Bambini affetti da patologie neurologiche e neuromuscolari'
WHEN  'A07'  THEN  'Bambini ed adolescenti in trattamento a lungo termine con Acido Acetilsalicilico, a rischio di sindrome di Reye in caso di infezione influenzale'
WHEN  'A06'  THEN  'Bambini di età superiore ai 6 mesi con condizioni morbose predisponenti alle complicanze'
WHEN  'A05'  THEN  'Soggetti addetti a servizi pubblici di primario interesse collettivo e categorie di lavoratori'
WHEN  'A04'  THEN  'Individui di qualunque età ricoverati presso strutture per lungodegenti'
WHEN  'A03'  THEN  'Medici e personale sanitario di assistenza'
WHEN  'A02'  THEN  'Adulti affetti da patologie croniche'
WHEN  'A01'  THEN  'Soggetti di età pari o superiore a 65 anni'
ELSE  Max( v.ora) || ' - Altra categoria'  END )  ELSE  NULL  END )  As  categoria_rischio ,  
Case  WHEN   Trim( Left( Max( v.va_note), Position( 'I ' in '  I     T2DM' )))  = 'I'   THEN   'INFLUVAC'  
WHEN    Trim( Left( Max( v.va_note), Position( 'I ' in '  I     T2DM' )))  =  'F'   THEN  'FLUAD'   ELSE   NULL  END  As  tipo_vaccino ,   Max( v.va_note) As Patologia ,
Case  Max( fatto_io)  WHEN   'D'   THEN   ' in Office'   WHEN   'E'   THEN   ' Domicilio'   WHEN   'F'   THEN   ' in RSA'      WHEN   'A'   THEN   ' Priv  in Office'   WHEN   'B'   THEN   ' Priv  Domicilio'   WHEN   'C'   THEN   ' Priv  in RSA'   ELSE   Max( fatto_io)   END  As  sede ,
Trim( Left( v.lotto ,  Position( '  ' in v.lotto)-1 )) As  lotto ,     Left( '20', 2) || SubString( v.lotto From Length( v.lotto )-5 For 2 ) || '-' || SubString( v.lotto From Length( v.lotto )-3 For 2 ) ||'-' || Right( lotto, 2 )  As  scadenza_lotto    /*  Trim( Right( lotto , Position( ' ' in v.lotto)-1  ))  As  scadenza_lotto  */ ,
(Select Cast( Count( e.motese) As SmallInt) From cart_paz_ese e Where e.codice = p.codice )
   _esenzioni_n1_ ,
(Select Cast( Count( e.motese) As SmallInt) From cart_paz_ese e Where e.codice = p.codice And ( dscdese Is Null Or dscdese > '2015-12-31' ) And ( e.motese Not ILike '%Reddito%' AND e.motese Not ILike '%lavor%' AND e.motese Not ILike '%Inval%'))
   _esenzioni_n_ ,
Array_To_String( Array( Select e.motese From cart_paz_ese e Where e.codice = p.codice And (( dscdese Is Null Or dscdese > '2015-12-31' ) And ( e.motese Not ILike '%Reddito%' AND e.motese Not ILike '%lavor%' AND e.motese Not ILike '%Inval%'))) , ' ,')      _esenzioni_tipo_ ,            u.codice_fiscale   As   cod_fisc_mmg
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_vaccini v    ON    v.codice = p.codice
WHERE     u.nome  ILike  '%'            AND     u.codice_regionale   ILIKE   '%'
AND    p.pa_convenzione = 'S'        AND     sesso   ILIKE   '%' 
AND    Days( p.nascita, '2017/01/01')*24/8766  <  105        AND    v.va_tipo   ILIKE   '%Influ%'  
AND    ( v.va_data   BETWEEN  '2015-10-01'   AND  '2015-12-31'     /*  AND  v.ora   NOT ILIKE  'A13'  */
And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
                     AND  p.codice  NOT IN
(Select v.codice From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31' And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
GROUP BY   u.codice_fiscale ,  p.codice_fiscale ,  p.cognome ,  p.nome ,  p.nascita , p.sesso ,  p.codice ,  v.lotto
ORDER BY  1 , 2 , 7 desc  , 3  , 4


Disattivare le colonne superflue e/o obsolete inglobandole in  /*   */
Saluti ,  Sergio


Perfetta, estrae anche i deceduti  e i pazienti non piu' in carico ma non è un problema!
Grazie
 
Prego , basta aggiungere la relativa clausola di esclusione dopo  AND sesso ILIKE '%  e  prima di  AND v.va_tipo ILIKE   '%Influ%'  :

AND Year( p.nascita) Between 1910 And 2016
AND ( n.pa_drevoca Is Null Or n.pa_drevoca > Today() Or ( n.pa_drevoca Between
Date( Today())-365 And Today() And motivo_revoca = 'S')) And p.decesso Is Null

Sergio

Cervino
Membro Junior
Membro Junior

Messaggi : 201
Punti : 2732
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: statistiche influenza

Messaggio  drtulino il Mer 16 Nov 2016 - 12:29

Cervino ha scritto:
Io utilizzo la seguente query per la verifica ( MW 13.38 ) , adattata dallo scorso anno :

SELECT Distinct    Cast( p.cognome As Char(20)) ,  p.nome ,   Cast( DateFormat( Max( p.nascita), 'yyyy/mm/dd' ) As Char(16))  As Nascita ,    p.sesso ,     
Cast( Extract( YEAR From AGE( p.nascita ))||'y'||Extract( MONTH From AGE( p.nascita ))||'m'||Extract( Day From AGE( p.nascita ))||'d' As Char(12))  As  eta ,         Cast( p.codice_fiscale As Char(16))  As  codfisc_paz , 

Cast( DateFormat( Max( v.va_data), 'yyyy/mm/dd' ) As Char(16))   As  Influ_d ,  
(Select v.va_data From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31' And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid )))) _Influ_d1_ ,
Max( v.va_tipo)  As  vaccino ,  Max( v.ora)   As  cat_code ,
( CASE  Coalesce( Left( Max( v.ora) , 1 ),'')    WHEN  'V'  THEN   ( CASE Max( v.ora)
WHEN  'VA1'  THEN  'Personale sanitario e socio-sanitario'
WHEN  'VA2'  THEN  'Personale delle forze di pubblica sicurezza e della protezione civile'
WHEN  'VA3'  THEN  'Personale del corpo dei Vigili del fuoco Ministero Interno'
WHEN  'VA4'  THEN  'Personale delle forze armate'
WHEN  'VA5'  THEN  'Personale che assicura i servizi pubblici essenziali'
WHEN  'VA6'  THEN  'Donatori di sangue periodici'
WHEN  'VB1'  THEN  'Donne al secondo o al terzo trimestre di gravidanza'
WHEN  'VB2'  THEN  'Donne che hanno partorito da meno di sei mesi o persona che assiste il bambino'
WHEN  'VC1'  THEN  'Portatori di almeno una delle condizioni di rischio di età compresa tra 6 mesi e 65 anni'
WHEN  'VD1'  THEN  'Bambini di età superiore a sei mesi che frequentano l''asilo nido (non incluse nei precedenti punti)'
WHEN  'VD2'  THEN  'Minori che vivono in comunità o istituzionalizzati (non incluse nei precedenti punti)'
WHEN  'VD3'  THEN  'Soggetti con meno di 24 mesi nati gravemente pretermine'
WHEN  'VE1'  THEN  'Persone di età compresa tra 6 mesi e 17 anni (non incluse nei precedenti punti)'
WHEN  'VF1'  THEN  'Persone di età compresa tra 18 e 27 anni (non incluse nei precedenti punti)'
ELSE Max( v.ora) || ' - Altra categoria'   END)
WHEN  'B'  THEN  ( CASE  Max( v.ora)
WHEN  'B9 '  THEN  'Anziani over 65'
WHEN  'B33'  THEN  'Bambini mal. neurologiche o neuromuscolari'
WHEN  'B32'  THEN  'Mal. con immunodepressione'
WHEN  'B31'  THEN  'Patologie con programmati interventi chirurgici'
WHEN  'B30'  THEN  'Sindrome da malassorbimento intestinale'
WHEN  'B29'  THEN  'Mal.organi emopoietici ed emoglobinopatie'
WHEN  'B28'  THEN  'Mal. renali con Insuff. Renale'
WHEN  'B27'  THEN  'Mal. Tumorali'
WHEN  'B26'  THEN  'Diabete mellito e mal. Metaboliche'
WHEN  'B25'  THEN  'Mal. apparato cardiocircolatorio'
WHEN  'B24'  THEN  'Mal. croniche app. respiratorio'
WHEN  'B23'  THEN  'a pagamento'
WHEN  'B22'  THEN  'Allevatori, Veterinari, ecc.'
WHEN  'B21'  THEN  'Addetti a servizi pubblici di primario interesse collettivo'
WHEN  'B20'  THEN  'Contatti familiari di soggetti ad alto rischio'
WHEN  'B19'  THEN  'Medici e personale sanitario'
WHEN  'B18'  THEN  'Ricoverati presso strutture di lungodegenza'
WHEN  'B17'  THEN  'Donne in gravidanza'
WHEN  'B16'  THEN  'Bambini pretermine'
WHEN  'B15'  THEN  'Bambini e adolescenti in trattamento cronico con ASA'
WHEN  'B14'  THEN  'Altre malattie'
WHEN  'B13'  THEN  'HIV'
WHEN  'B12'  THEN  'Broncopneumopatici'
WHEN  'B11'  THEN  'Cardiopatici'
WHEN  'B10'  THEN  'Diabetici'
ELSE  Max( v.ora) || ' - Altra categoria'  END)
WHEN  'H'  THEN   ( CASE  Max( v.ora)
WHEN  'HNF'  THEN  'f) Persone tra i 18 e 27 anni, non incluse nei precedenti punti'
WHEN  'HNE'  THEN  'e) Persone di età compresa tra piu'' di 6 mesi e 17 anni, non incluse nei precedenti punti, sulla base degli aggiornamenti della scheda tecnica autorizzativa EMEA.'
WHEN  'HND'  THEN  'd) Bambini di età superiore a 6 mesi che frequentano asilo nido; minori che vivono in comunità o istituzionalizzati.'
WHEN  'HNC'  THEN  'c) Portatori di almeno una delle condizioni di rischio, di cui al comma 2 art. 1 Ord 11-09-2009, nonchÈ i soggetti fino a 24 mesi nati gravemente pretermine'
WHEN  'HNB'  THEN  'b) Donne al secondo o al terzo trimestre di gravidanza: donne che hanno partorito da meno di 6 mesi o, in loro assenza, la persona che assiste il bambino in maniera continuativa'
WHEN  'HNA'  THEN  'a) Pers. san. e socio-san.: PS e PC,: VVFF del Min. interno; FFAA; servizi pubbl. essenz. L. 12/6/90 n. 8146. e succ. mod. piani di continuità datori di lavoro, donatori di sangue ecc.'
ELSE  Max( v.ora)  || ' - Altra categoria'  END)
WHEN  'A'  THEN   (CASE  Max( v.ora)
WHEN  'A29'  THEN  'Affetti da: Pat. ass. ad un aumentato rischio di aspirazione delle secrezioni respiratorie (es. m. neuromuscolari)'
WHEN  'A28'  THEN  'Affetti da: Pat. per le quali sono programmati interventi chirurgici'
WHEN  'A27'  THEN  'Affetti da: M. infiammatorie croniche e s. di malassorbimento intestinali'
WHEN  'A26'  THEN  'Affetti da: M. cong. o acquisite che comportino carenze prod. anticorpi, immunosoppressione da farmaci o da HIV'
WHEN  'A25'  THEN  'Affetti da: Tumori'
WHEN  'A24'  THEN  'Affetti da: M. degli organi emopoietici ed emoglobinopatie'
WHEN  'A23'  THEN  'Affetti da: M. renali con influenza renale'
WHEN  'A22'  THEN  'Affetti da: Diabete mellito ed altre malattie metaboliche'
WHEN  'A21'  THEN  'Affetti da: M. apparato cardio-circolatorio, comprese cardiopatie cong. e acquisite'
WHEN  'A20'  THEN  'Affetti da: M. croniche apparato respiratorio (incl. Asma, displasia bronc., fibrosi cistica e BPCO)'
WHEN  'A13'  THEN  'Categoria non nota'
WHEN  'A12'  THEN  'Soggetti ad alto rischio'
WHEN  'A11'  THEN  'Donne che saranno nel secondo e terzo trimestre di gravidanza a inizio stagione epidemica'
WHEN  'A10'  THEN  'Personale che, per motivi di lavoro, è a contatto con animali che potrebbero costituire fonte di infezione da virus influenzali non umani'
WHEN  'A09'  THEN  'Familiari e contatti di soggetti ad alto rischio'
WHEN  'A08'  THEN  'Bambini affetti da patologie neurologiche e neuromuscolari'
WHEN  'A07'  THEN  'Bambini ed adolescenti in trattamento a lungo termine con Acido Acetilsalicilico, a rischio di sindrome di Reye in caso di infezione influenzale'
WHEN  'A06'  THEN  'Bambini di età superiore ai 6 mesi con condizioni morbose predisponenti alle complicanze'
WHEN  'A05'  THEN  'Soggetti addetti a servizi pubblici di primario interesse collettivo e categorie di lavoratori'
WHEN  'A04'  THEN  'Individui di qualunque età ricoverati presso strutture per lungodegenti'
WHEN  'A03'  THEN  'Medici e personale sanitario di assistenza'
WHEN  'A02'  THEN  'Adulti affetti da patologie croniche'
WHEN  'A01'  THEN  'Soggetti di età pari o superiore a 65 anni'
ELSE  Max( v.ora) || ' - Altra categoria'  END )  ELSE  NULL  END )  As  categoria_rischio ,  
Case  WHEN   Trim( Left( Max( v.va_note), Position( 'I ' in '  I     T2DM' )))  = 'I'   THEN   'INFLUVAC'  
WHEN    Trim( Left( Max( v.va_note), Position( 'I ' in '  I     T2DM' )))  =  'F'   THEN  'FLUAD'   ELSE   NULL  END  As  tipo_vaccino ,   Max( v.va_note) As Patologia ,
Case  Max( fatto_io)  WHEN   'D'   THEN   ' in Office'   WHEN   'E'   THEN   ' Domicilio'   WHEN   'F'   THEN   ' in RSA'      WHEN   'A'   THEN   ' Priv  in Office'   WHEN   'B'   THEN   ' Priv  Domicilio'   WHEN   'C'   THEN   ' Priv  in RSA'   ELSE   Max( fatto_io)   END  As  sede ,
Trim( Left( v.lotto ,  Position( '  ' in v.lotto)-1 )) As  lotto ,     Left( '20', 2) || SubString( v.lotto From Length( v.lotto )-5 For 2 ) || '-' || SubString( v.lotto From Length( v.lotto )-3 For 2 ) ||'-' || Right( lotto, 2 )  As  scadenza_lotto    /*  Trim( Right( lotto , Position( ' ' in v.lotto)-1  ))  As  scadenza_lotto  */ ,
(Select Cast( Count( e.motese) As SmallInt) From cart_paz_ese e Where e.codice = p.codice )
   _esenzioni_n1_ ,
(Select Cast( Count( e.motese) As SmallInt) From cart_paz_ese e Where e.codice = p.codice And ( dscdese Is Null Or dscdese > '2015-12-31' ) And ( e.motese Not ILike '%Reddito%' AND e.motese Not ILike '%lavor%' AND e.motese Not ILike '%Inval%'))
   _esenzioni_n_ ,
Array_To_String( Array( Select e.motese From cart_paz_ese e Where e.codice = p.codice And (( dscdese Is Null Or dscdese > '2015-12-31' ) And ( e.motese Not ILike '%Reddito%' AND e.motese Not ILike '%lavor%' AND e.motese Not ILike '%Inval%'))) , ' ,')      _esenzioni_tipo_ ,            u.codice_fiscale   As   cod_fisc_mmg
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_vaccini v    ON    v.codice = p.codice
WHERE     u.nome  ILike  '%'            AND     u.codice_regionale   ILIKE   '%'
AND    p.pa_convenzione = 'S'        AND     sesso   ILIKE   '%' 
AND    Days( p.nascita, '2017/01/01')*24/8766  <  105        AND    v.va_tipo   ILIKE   '%Influ%'  
AND    ( v.va_data   BETWEEN  '2015-10-01'   AND  '2015-12-31'     /*  AND  v.ora   NOT ILIKE  'A13'  */
And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
                     AND  p.codice  NOT IN
(Select v.codice From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31' And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
GROUP BY   u.codice_fiscale ,  p.codice_fiscale ,  p.cognome ,  p.nome ,  p.nascita , p.sesso ,  p.codice ,  v.lotto
ORDER BY  1 , 2 , 7 desc  , 3  , 4


Disattivare le colonne superflue e/o obsolete inglobandole in  /*   */
Saluti ,  Sergio
A me dà il seguente errore: "non è consentita una stringa con lunghezza negativa" SELECT Distinct    Cast( p.cognome As Char(20)) ,  p.nome ,   Cast( DateFormat( Max( p.nascita), 'yyyy/mm/dd' ) As Char(16))  As Nascita ,    p.sesso , 

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

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

Vedi il profilo dell'utente http://www.facebook.com/groups/utentimillewin/

Tornare in alto Andare in basso

Re: statistiche influenza

Messaggio  Cervino il Gio 17 Nov 2016 - 0:43

drtulino ha scritto:
Cervino ha scritto:
Io utilizzo la seguente query per la verifica ( MW 13.38 ) , adattata dallo scorso anno :

SELECT Distinct    Cast( p.cognome As Char(20)) ,  p.nome ,   Cast( DateFormat( Max( p.nascita), 'yyyy/mm/dd' ) As Char(16))  As Nascita ,    p.sesso ,      
...
ORDER BY  1 , 2 , 7 desc  , 3  , 4
A me dà il seguente errore: "non è consentita una stringa con lunghezza negativa" SELECT Distinct    Cast( p.cognome As Char(20)) ,  p.nome ,   Cast( DateFormat( Max( p.nascita), 'yyyy/mm/dd' ) As Char(16))  As Nascita ,    p.sesso , 
Difficile capire il perchè dell' errore : evidentemente almeno una subquery crea problemi ( usando PgAdmin sarebbe piu' semplice correggere la query ) .    
Comunque quando una query non funziona , basta togliere progressivamente colonne 
e/o subquery e/o eliminare le funzioni non essenziali ( Cast ad es. ) .  Proverei con una versione semplificata :

SELECT Distinct    Cast( p.cognome As Char(20)) ,  p.nome ,   p.nascita,    p.sesso ,     
Days( p.nascita , '2017-01-01' )*24/8766  As  eta ,      Max( v.va_data  As  Influ_d ,
  
(Select v.va_data From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31'
And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data
Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
                _Influ_d1_ ,

Max( v.va_tipo)  As  vaccino ,        Max( v.ora)   As  cat_code ,
u.codice_fiscale   As   cod_fisc_mmg
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_vaccini v    ON    v.codice = p.codice

WHERE     u.nome  ILike  '%'            AND     u.codice_regionale   ILIKE   '%'
AND    p.pa_convenzione = 'S'          AND     p.sesso   ILIKE    '%'           
AND    Year( nascita)       Between  1910  And  2016
AND ( n.pa_drevoca Is Null  Or  n.pa_drevoca >  Today()  Or  ( n.pa_drevoca Between
Date( Today())-365  And Today() And motivo_revoca = 'S'))       AND    p.decesso Is Null
AND   ( v.va_tipo   ILIKE   '%Influ%'       AND    v.va_data   BETWEEN  '2015-10-01'   AND  '2015-12-31'     /*  AND  v.ora   NOT ILIKE  'A13'  */
And Not Exists (Select v1.codice From cart_vaccini v1  Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data

Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
                                                         AND  p.codice  NOT IN

(Select v.codice From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31'
And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data
Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
GROUP BY   u.codice_fiscale ,  p.codice_fiscale ,  p.cognome ,  p.nome ,  p.nascita , p.sesso ,  p.codice
ORDER BY  1 , 2


Saluti ,  Sergio

Cervino
Membro Junior
Membro Junior

Messaggi : 201
Punti : 2732
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: statistiche influenza

Messaggio  drtulino il Gio 17 Nov 2016 - 12:50

Cervino ha scritto:
Difficile capire il perchè dell' errore : evidentemente almeno una subquery crea problemi ( usando PgAdmin sarebbe piu' semplice correggere la query ) .    
Comunque quando una query non funziona , basta togliere progressivamente colonne 
e/o subquery e/o eliminare le funzioni non essenziali ( Cast ad es. ) .  Proverei con una versione semplificata :

SELECT Distinct    Cast( p.cognome As Char(20)) ,  p.nome ,   p.nascita,    p.sesso ,     
Days( p.nascita , '2017-01-01' )*24/8766  As  eta ,      Max( v.va_data  As  Influ_d ,
  
(Select v.va_data From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31'
And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data
Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
                _Influ_d1_ ,

Max( v.va_tipo)  As  vaccino ,        Max( v.ora)   As  cat_code ,
u.codice_fiscale   As   cod_fisc_mmg
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_vaccini v    ON    v.codice = p.codice

WHERE     u.nome  ILike  '%'            AND     u.codice_regionale   ILIKE   '%'
AND    p.pa_convenzione = 'S'          AND     p.sesso   ILIKE    '%'           
AND    Year( nascita)       Between  1910  And  2016
AND ( n.pa_drevoca Is Null  Or  n.pa_drevoca >  Today()  Or  ( n.pa_drevoca Between
Date( Today())-365  And Today() And motivo_revoca = 'S'))       AND    p.decesso Is Null
AND   ( v.va_tipo   ILIKE   '%Influ%'       AND    v.va_data   BETWEEN  '2015-10-01'   AND  '2015-12-31'     /*  AND  v.ora   NOT ILIKE  'A13'  */
And Not Exists (Select v1.codice From cart_vaccini v1  Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data

Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
                                                         AND  p.codice  NOT IN

(Select v.codice From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31'
And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data
Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
GROUP BY   u.codice_fiscale ,  p.codice_fiscale ,  p.cognome ,  p.nome ,  p.nascita , p.sesso ,  p.codice
ORDER BY  1 , 2


Saluti ,  Sergio
Mi dà errore di sintassi a o presso "As"

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

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

Vedi il profilo dell'utente http://www.facebook.com/groups/utentimillewin/

Tornare in alto Andare in basso

Re: statistiche influenza

Messaggio  Cervino il Gio 17 Nov 2016 - 13:39

manca una parentesi nella query ( ho problemi di formattazione nello scrivere il post e/o copiare le query ) : 

SELECT Distinct    Cast( p.cognome As Char(20)) ,  p.nome ,   p.nascita,    p.sesso ,     
Days( p.nascita , '2017-01-01' )*24/8766  As  eta ,      Max( v.va_data)  As  Influ_d ,
  
(Select v.va_data From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31'
And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data
Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
                _Influ_d1_ ,

Max( v.va_tipo)  As  vaccino ,        Max( v.ora)   As  cat_code ,
u.codice_fiscale   As   cod_fisc_mmg
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_vaccini v    ON    v.codice = p.codice

WHERE     u.nome  ILike  '%'            AND     u.codice_regionale   ILIKE   '%'
AND    p.pa_convenzione = 'S'          AND     p.sesso   ILIKE    '%'           
AND    Year( nascita)       Between  1910  And  2016
AND ( n.pa_drevoca Is Null  Or  n.pa_drevoca >  Today()  Or  ( n.pa_drevoca Between
Date( Today())-365  And Today() And motivo_revoca = 'S'))       AND    p.decesso Is Null
AND   ( v.va_tipo   ILIKE   '%Influ%'       AND    v.va_data   BETWEEN  '2015-10-01'   AND  '2015-12-31'     /*  AND  v.ora   NOT ILIKE  'A13'  */
And Not Exists (Select v1.codice From cart_vaccini v1  Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data

Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
                                                         AND  p.codice  NOT IN

(Select v.codice From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31'
And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data
Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
GROUP BY   u.codice_fiscale ,  p.codice_fiscale ,  p.cognome ,  p.nome ,  p.nascita , p.sesso ,  p.codice
ORDER BY  1 , 2



spero nel buon esito ,   Sergio

Cervino
Membro Junior
Membro Junior

Messaggi : 201
Punti : 2732
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: statistiche influenza

Messaggio  drtulino il Gio 17 Nov 2016 - 16:07

Cervino ha scritto:manca una parentesi nella query ( ho problemi di formattazione nello scrivere il post e/o copiare le query ) : 

SELECT Distinct    Cast( p.cognome As Char(20)) ,  p.nome ,   p.nascita,    p.sesso ,     
Days( p.nascita , '2017-01-01' )*24/8766  As  eta ,      Max( v.va_data)  As  Influ_d ,
  
(Select v.va_data From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31'
And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data
Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
                _Influ_d1_ ,

Max( v.va_tipo)  As  vaccino ,        Max( v.ora)   As  cat_code ,
u.codice_fiscale   As   cod_fisc_mmg
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_vaccini v    ON    v.codice = p.codice

WHERE     u.nome  ILike  '%'            AND     u.codice_regionale   ILIKE   '%'
AND    p.pa_convenzione = 'S'          AND     p.sesso   ILIKE    '%'           
AND    Year( nascita)       Between  1910  And  2016
AND ( n.pa_drevoca Is Null  Or  n.pa_drevoca >  Today()  Or  ( n.pa_drevoca Between
Date( Today())-365  And Today() And motivo_revoca = 'S'))       AND    p.decesso Is Null
AND   ( v.va_tipo   ILIKE   '%Influ%'       AND    v.va_data   BETWEEN  '2015-10-01'   AND  '2015-12-31'     /*  AND  v.ora   NOT ILIKE  'A13'  */
And Not Exists (Select v1.codice From cart_vaccini v1  Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data

Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
                                                         AND  p.codice  NOT IN

(Select v.codice From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31'
And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data
Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
GROUP BY   u.codice_fiscale ,  p.codice_fiscale ,  p.cognome ,  p.nome ,  p.nascita , p.sesso ,  p.codice
ORDER BY  1 , 2



spero nel buon esito ,   Sergio
Questa funziona. Grazie.

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

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

Vedi il profilo dell'utente http://www.facebook.com/groups/utentimillewin/

Tornare in alto Andare in basso

Re: statistiche influenza

Messaggio  aditroia il Mer 14 Dic 2016 - 11:29

La query funziona molto bene per l'anno 2015, è possibile ricercare chi si è vaccinato nell'anno in corso?

Inoltre è possibile avere una query che ricerca i soggetti vaccinati con il vaccino antipneumococco "Prevenar 13",
neglianni precedenti compreso l'anno in corso?

Grazie.
avatar
aditroia
Membro Junior
Membro Junior

Messaggi : 191
Punti : 2789
Voti per importanza dei messaggi : 4
Data d'iscrizione : 24.02.11

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: statistiche influenza

Messaggio  drtulino il Mer 14 Dic 2016 - 12:08

aditroia ha scritto:La query funziona molto bene per l'anno 2015, è possibile ricercare chi si è vaccinato nell'anno in corso?

Inoltre è possibile avere una query che ricerca i soggetti vaccinati con il vaccino antipneumococco "Prevenar 13",
neglianni precedenti compreso l'anno in corso?

Grazie.

Se scarichi dal sito l'apposita app che non è solo per la Regione toscana ti potrebbe essere utile. Questo il link: http://www.millewin.it/index.php/aggiornamenti/progetti/cse-regione-toscana/campagna-vaccinale/
In questi giorni ci dovrebbe essere un aggiornamento che migliora alcune piccole cose.

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

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

Vedi il profilo dell'utente http://www.facebook.com/groups/utentimillewin/

Tornare in alto Andare in basso

Re: statistiche influenza

Messaggio  aditroia il Gio 15 Dic 2016 - 19:12

Renato, il link da te suggerito da un errore di caricamento pagina....
avatar
aditroia
Membro Junior
Membro Junior

Messaggi : 191
Punti : 2789
Voti per importanza dei messaggi : 4
Data d'iscrizione : 24.02.11

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: statistiche influenza

Messaggio  aditroia il Gio 15 Dic 2016 - 20:49

Sono riuscito ad aprire il link partendo dal sito www.millewin.it  e nella pagina
relativa alla campagna vaccinale andrebbe scaricato il file "MilleSetupVaccini.exe".
Proverò ad installarlo sperando non mi vada a modificare nulla.....
avatar
aditroia
Membro Junior
Membro Junior

Messaggi : 191
Punti : 2789
Voti per importanza dei messaggi : 4
Data d'iscrizione : 24.02.11

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: statistiche influenza

Messaggio  aditroia il Gio 15 Dic 2016 - 21:24

..... installato.... tutto ok, grazie!
avatar
aditroia
Membro Junior
Membro Junior

Messaggi : 191
Punti : 2789
Voti per importanza dei messaggi : 4
Data d'iscrizione : 24.02.11

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: statistiche influenza

Messaggio  drtulino il Gio 15 Dic 2016 - 22:40

aditroia ha scritto:..... installato.... tutto ok, grazie!
Essendo di una Regione diversa della Toscana, meglio ancora se lo scarichi dalla sessione "Nazionale" raggiungibile (forse) da questo link: http://www.millewin.it/index.php/aggiornamenti/progetti/nazionale/vaccini-2015-16/ (se fai copia/incolla del link funziona)
Oppure dal sito www.millein.it - Aggiornamento - Aggiornamento Millewin e Add-on di progetto - Nazionale - Campagna Vaccinale


Ultima modifica di drtulino il Gio 22 Dic 2016 - 16:23, modificato 1 volta

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

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

Vedi il profilo dell'utente http://www.facebook.com/groups/utentimillewin/

Tornare in alto Andare in basso

Re: statistiche influenza

Messaggio  Cervino il Ven 16 Dic 2016 - 0:54

aditroia ha scritto:La query funziona molto bene per l'anno 2015, è possibile ricercare chi si è vaccinato nell'anno in corso?
Inoltre è possibile avere una query che ricerca i soggetti vaccinati con il vaccino antipneumococco "Prevenar 13",
neglianni precedenti compreso l'anno in corso ?  
Grazie.
Semplice  basta disattivare la relativa condizione di esclusione , inglobandola in   /*   * /    od eliminandola :

AND  p.codice  NOT IN (Select v.codice From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01'  And '2016-12-31' And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))

     ed ovviamente correggere la data  nella riga precedente :

AND   ( v.va_tipo   ILIKE   '%Influ%'       AND    v.va_data   BETWEEN  '2016-10-01'   AND  '2016-12-31' )   

       per estrarre con il vaccino AntiPneumococco , basta modificare la clausola relativa :

AND   ( v.va_tipo   ILIKE   '%Preve%'       AND    v.va_data   BETWEEN  '2016-10-01'   AND  '2016-12-31' )  

    oppure   ad  es.  ( basta  fare delle semplici prove ) :

AND   ( v.va_tipo   ILIKE   '%Pneumoc%'       AND    v.va_data   BETWEEN  '2016-10-01'   AND  '2016-12-31'  )

     lo scorso anno ho utilizzzato una query del tipo ( purtroppo in W10 la query perde la formattazione ottimale ) :


SELECT Distinct Cast( p.cognome As Char(20)) , p.nome , Cast( DateFormat( Max( p.nascita), 'yyyy/mm/dd' ) As Char(16)) As Nascita , p.sesso , Cast( Extract( YEAR From AGE( p.nascita ))||'y'||Extract( MONTH From AGE( p.nascita ))||'m'||Extract( Day From AGE( p.nascita ))||'d' As Char(12)) As eta , Cast( p.codice_fiscale As Char(16)) As codfisc_paz ,
Cast( DateFormat( Max( v.va_data), 'yyyy/mm/dd' ) As Char(16)) As Influ_d ,
(Select v.va_data From cart_vaccini v Where v.codice = p.codice And v.va_tipo ILike '%Influ%' And v.va_data Between '2016-10-01' And '2016-12-31' And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid )))) _Influ_d1_ ,
Max( v.va_tipo) As vaccino , Max( v.ora) As cat_code ,
( CASE Coalesce( Left( Max( v.ora) , 1 ),'') WHEN 'V' THEN ( CASE Max( v.ora)
WHEN 'VA1' THEN 'Personale sanitario e socio-sanitario'
WHEN 'VA2' THEN 'Personale delle forze di pubblica sicurezza e della protezione civile'
WHEN 'VA3' THEN 'Personale del corpo dei Vigili del fuoco Ministero Interno'
WHEN 'VA4' THEN 'Personale delle forze armate'
WHEN 'VA5' THEN 'Personale che assicura i servizi pubblici essenziali'
WHEN 'VA6' THEN 'Donatori di sangue periodici'
WHEN 'VB1' THEN 'Donne al secondo o al terzo trimestre di gravidanza'
WHEN 'VB2' THEN 'Donne che hanno partorito da meno di sei mesi o persona che assiste il bambino'
WHEN 'VC1' THEN 'Portatori di almeno una delle condizioni di rischio di età compresa tra 6 mesi e 65 anni'
WHEN 'VD1' THEN 'Bambini di età superiore a sei mesi che frequentano l''asilo nido (non incluse nei precedenti punti)'
WHEN 'VD2' THEN 'Minori che vivono in comunità o istituzionalizzati (non incluse nei precedenti punti)'
WHEN 'VD3' THEN 'Soggetti con meno di 24 mesi nati gravemente pretermine'
WHEN 'VE1' THEN 'Persone di età compresa tra 6 mesi e 17 anni (non incluse nei precedenti punti)'
WHEN 'VF1' THEN 'Persone di età compresa tra 18 e 27 anni (non incluse nei precedenti punti)'
ELSE Max( v.ora) || ' - Altra categoria' END)
WHEN 'B' THEN ( CASE Max( v.ora)
WHEN 'B9 ' THEN 'Anziani over 65'
WHEN 'B33' THEN 'Bambini mal. neurologiche o neuromuscolari'
WHEN 'B32' THEN 'Mal. con immunodepressione'
WHEN 'B31' THEN 'Patologie con programmati interventi chirurgici'
WHEN 'B30' THEN 'Sindrome da malassorbimento intestinale'
WHEN 'B29' THEN 'Mal.organi emopoietici ed emoglobinopatie'
WHEN 'B28' THEN 'Mal. renali con Insuff. Renale'
WHEN 'B27' THEN 'Mal. Tumorali'
WHEN 'B26' THEN 'Diabete mellito e mal. Metaboliche'
WHEN 'B25' THEN 'Mal. apparato cardiocircolatorio'
WHEN 'B24' THEN 'Mal. croniche app. respiratorio'
WHEN 'B23' THEN 'a pagamento'
WHEN 'B22' THEN 'Allevatori, Veterinari, ecc.'
WHEN 'B21' THEN 'Addetti a servizi pubblici di primario interesse collettivo'
WHEN 'B20' THEN 'Contatti familiari di soggetti ad alto rischio'
WHEN 'B19' THEN 'Medici e personale sanitario'
WHEN 'B18' THEN 'Ricoverati presso strutture di lungodegenza'
WHEN 'B17' THEN 'Donne in gravidanza'
WHEN 'B16' THEN 'Bambini pretermine'
WHEN 'B15' THEN 'Bambini e adolescenti in trattamento cronico con ASA'
WHEN 'B14' THEN 'Altre malattie'
WHEN 'B13' THEN 'HIV'
WHEN 'B12' THEN 'Broncopneumopatici'
WHEN 'B11' THEN 'Cardiopatici'
WHEN 'B10' THEN 'Diabetici'
ELSE Max( v.ora) || ' - Altra categoria' END)
WHEN 'H' THEN ( CASE Max( v.ora)
WHEN 'HNF' THEN 'f) Persone tra i 18 e 27 anni, non incluse nei precedenti punti'
WHEN 'HNE' THEN 'e) Persone di età compresa tra piu'' di 6 mesi e 17 anni, non incluse nei precedenti punti, sulla base degli aggiornamenti della scheda tecnica autorizzativa EMEA.'
WHEN 'HND' THEN 'd) Bambini di età superiore a 6 mesi che frequentano asilo nido; minori che vivono in comunità o istituzionalizzati.'
WHEN 'HNC' THEN 'c) Portatori di almeno una delle condizioni di rischio, di cui al comma 2 art. 1 Ord 11-09-2009, nonchÈ i soggetti fino a 24 mesi nati gravemente pretermine'
WHEN 'HNB' THEN 'b) Donne al secondo o al terzo trimestre di gravidanza: donne che hanno partorito da meno di 6 mesi o, in loro assenza, la persona che assiste il bambino in maniera continuativa'
WHEN 'HNA' THEN 'a) Pers. san. e socio-san.: PS e PC,: VVFF del Min. interno; FFAA; servizi pubbl. essenz. L. 12/6/90 n. 8146. e succ. mod. piani di continuità datori di lavoro, donatori di sangue ecc.'
ELSE Max( v.ora) || ' - Altra categoria' END)
WHEN 'A' THEN (CASE Max( v.ora)
WHEN 'A29' THEN 'Affetti da: Pat. ass. ad un aumentato rischio di aspirazione delle secrezioni respiratorie (es. m. neuromuscolari)'
WHEN 'A28' THEN 'Affetti da: Pat. per le quali sono programmati interventi chirurgici'
WHEN 'A27' THEN 'Affetti da: M. infiammatorie croniche e s. di malassorbimento intestinali'
WHEN 'A26' THEN 'Affetti da: M. cong. o acquisite che comportino carenze prod. anticorpi, immunosoppressione da farmaci o da HIV'
WHEN 'A25' THEN 'Affetti da: Tumori'
WHEN 'A24' THEN 'Affetti da: M. degli organi emopoietici ed emoglobinopatie'
WHEN 'A23' THEN 'Affetti da: M. renali con influenza renale'
WHEN 'A22' THEN 'Affetti da: Diabete mellito ed altre malattie metaboliche'
WHEN 'A21' THEN 'Affetti da: M. apparato cardio-circolatorio, comprese cardiopatie cong. e acquisite'
WHEN 'A20' THEN 'Affetti da: M. croniche apparato respiratorio (incl. Asma, displasia bronc., fibrosi cistica e BPCO)'
WHEN 'A13' THEN 'Categoria non nota'
WHEN 'A12' THEN 'Soggetti ad alto rischio'
WHEN 'A11' THEN 'Donne che saranno nel secondo e terzo trimestre di gravidanza a inizio stagione epidemica'
WHEN 'A10' THEN 'Personale che, per motivi di lavoro, è a contatto con animali che potrebbero costituire fonte di infezione da virus influenzali non umani'
WHEN 'A09' THEN 'Familiari e contatti di soggetti ad alto rischio'
WHEN 'A08' THEN 'Bambini affetti da patologie neurologiche e neuromuscolari'
WHEN 'A07' THEN 'Bambini ed adolescenti in trattamento a lungo termine con Acido Acetilsalicilico, a rischio di sindrome di Reye in caso di infezione influenzale'
WHEN 'A06' THEN 'Bambini di età superiore ai 6 mesi con condizioni morbose predisponenti alle complicanze'
WHEN 'A05' THEN 'Soggetti addetti a servizi pubblici di primario interesse collettivo e categorie di lavoratori'
WHEN 'A04' THEN 'Individui di qualunque età ricoverati presso strutture per lungodegenti'
WHEN 'A03' THEN 'Medici e personale sanitario di assistenza'
WHEN 'A02' THEN 'Adulti affetti da patologie croniche'
WHEN 'A01' THEN 'Soggetti di età pari o superiore a 65 anni'
ELSE Max( v.ora) || ' - Altra categoria' END ) ELSE NULL END ) As categoria_rischio ,
Case WHEN Trim( Left( Max( v.va_note), Position( 'I ' in ' I T2DM' ))) = 'I' THEN 'INFLUVAC'
WHEN Trim( Left( Max( v.va_note), Position( 'I ' in ' I T2DM' ))) = 'F' THEN 'FLUAD' ELSE NULL END As tipo_vaccino , Max( v.va_note)

As Patologia ,
Case Max( fatto_io) WHEN 'D' THEN ' in Office' WHEN 'E' THEN ' Domicilio' WHEN 'F' THEN ' in RSA' WHEN 'A' THEN ' Priv in Office' WHEN 'B' THEN ' Priv Domicilio' WHEN 'C' THEN ' Priv in RSA' ELSE Max( fatto_io) END As sede ,
Trim( Left( v.lotto , Position( ' ' in v.lotto)-1 )) As lotto , Left( '20', 2) || SubString( v.lotto From Length( v.lotto )-5 For 2 ) || '-' || SubString( v.lotto From Length( v.lotto )-3 For 2 ) ||'-' || Right( lotto, 2 ) As scadenza_lotto /* Trim( Right( lotto , Position( ' ' in v.lotto)-1 )) As scadenza_lotto */ ,
(Select Cast( Count( e.motese) As SmallInt) From cart_paz_ese e Where e.codice = p.codice )
_esenzioni_n1_ ,
(Select Cast( Count( e.motese) As SmallInt) From cart_paz_ese e Where e.codice = p.codice And ( dscdese Is Null Or dscdese > '2015-12-31' ) And ( e.motese Not ILike '%Reddito%' AND e.motese Not ILike '%lavor%' AND e.motese Not ILike '%Inval%'))
_esenzioni_n_ ,
Array_To_String( Array( Select e.motese From cart_paz_ese e Where e.codice = p.codice And (( dscdese Is Null Or dscdese > '2015-12-31' ) And ( e.motese Not ILike '%Reddito%' AND e.motese Not ILike '%lavor%' AND e.motese Not ILike '%Inval%'))) , ' ,') _esenzioni_tipo_ , u.codice_fiscale As cod_fisc_mmg
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_vaccini v ON v.codice = p.codice
WHERE u.nome ILike '%' AND u.codice_regionale ILIKE '%'
AND p.pa_convenzione = 'S' AND sesso ILIKE '%'
AND Days( p.nascita, '2017/01/01')*24/8766 < 105 AND v.va_tipo ILIKE '%Influ%'
AND ( v.va_data BETWEEN '2016-10-01' AND '2016-12-31' /* AND v.ora NOT ILIKE 'A13' */
And Not Exists (Select v1.codice From cart_vaccini v1 Where v1.codice = v.codice And v1.va_tipo ILike '%Influ%' And ( v1.va_data > v.va_data Or (v1.va_data = v.va_data And v1.rowid > v.rowid ))))
GROUP BY u.codice_fiscale , p.codice_fiscale , p.cognome , p.nome , p.nascita , p.sesso , p.codice , v.lotto
ORDER BY 1 , 2 , 7 desc , 3 , 4








     Saluti ,  Sergio  ,  Orzivecchi ,  BS

Cervino
Membro Junior
Membro Junior

Messaggi : 201
Punti : 2732
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: statistiche influenza

Messaggio  aditroia il Gio 22 Dic 2016 - 16:19

Grazie a Sergio e Renato, problema risolto!
avatar
aditroia
Membro Junior
Membro Junior

Messaggi : 191
Punti : 2789
Voti per importanza dei messaggi : 4
Data d'iscrizione : 24.02.11

Vedi il profilo dell'utente

Tornare in alto Andare in basso

Re: statistiche influenza

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