Commit 3cd2e1b2 authored by Pierre-Alain Jachiet's avatar Pierre-Alain Jachiet

Merge branch 'ajout-programmes-ARS' into 'master'

Ajout initial programmes par les ARS

See merge request !2
parents b9dd579f f98815eb
option mprint symbolgen;
/********************************************************************/
/****Estimation du nombre d'IVG en ville + hopital */
/* profil 84 patient */
/*****************************************************************/
/*1ère partie : DCIR*/
/* les IVG en ville */
/* pour info, on ne met pas de filtre sur le top T2A car il s'agit de forfait ville exclusivement */
proc sql;
drop table sasdata1.ivg;
%connectora;
create table sasdata1.ivg as
select * from connection to oracle (
select
ben_nir_psa,ben_rng_gem, ben_ama_cod,ben_res_dpt,ben_res_com, sum(case when PRS_nat_ref='1981' then PRS_ACT_QTE else 0 end) as qtt_forf_med,
sum(case when PRS_nat_ref='3329' then PRS_ACT_QTE else 0 end) as qtt_forf_pharm
from er_prs_f
where prs_nat_ref in ('1981', '3329')
and flx_dis_dtd>to_date('01012017','DDMMYYYY')
AND dpn_qlf not in (71)
AND CPL_MAJ_TOP in (0,1)
AND EXE_SOI_DTD BETWEEN to_date('01012017','DDMMYYYY') AND to_date('31122017','DDMMYYYY')
and ben_res_dpt in ('014','050','061','027','076')
GROUP bY ben_nir_psa,ben_rng_gem, ben_ama_cod,ben_res_dpt,ben_res_com);
disconnect from oracle;
quit;
proc sql;
create table sasdata1.ivg2 as select
trim((substr(ben_res_dpt,2,2)||ben_res_com))as codcom,
case
when (BEN_AMA_COD < 18 AND BEN_AMA_COD> 150) then "[0-17]"
when (BEN_AMA_COD >= 18 AND BEN_AMA_COD<=24) then "[18-24]"
when (BEN_AMA_COD >=25 AND BEN_AMA_COD<=29) then "[25-29]"
when (BEN_AMA_COD >= 30 AND BEN_AMA_COD<=39) then "[30-39]"
when (BEN_AMA_COD >= 40 AND BEN_AMA_COD<=49) then "[40-49]"
when (BEN_AMA_COD >= 50 AND BEN_AMA_COD<=59) then "[50-59]"
when (BEN_AMA_COD >= 60 AND BEN_AMA_COD<=69) then "[60-69]"
when (BEN_AMA_COD >= 70 AND BEN_AMA_COD<=79) then "[70-79]"
when (BEN_AMA_COD >= 80 AND BEN_AMA_COD<=89) then "[80-89]"
when (BEN_AMA_COD >= 90 AND BEN_AMA_COD< 150) then "[90+]"
else "inconnu" end as classe_age,
count (distinct (ben_nir_psa||put(ben_rng_gem,2.))) as nb_benef,
sum(MAX(qtt_forf_med,qtt_forf_pharm)) as qtt_IVG
from sasdata1.IVG
GROUP BY 1,2;
quit;
/* faire touner le programme de correction de michel Seguin ;*/
proc sql;
create table sasdata1.IVG_ville as select a.*,code_insee, libelle_de_la_commune
from sasdata1.ivg2 a, prfext.t_fin_geo_loc_france
where codcom=code_jointure;
run;
/******* extraction des IVG hospitalière ;
/*Programme IVG partie II*/
/*date : 12/12/2016*/
/*Base de donénes PMSI*/
/*maj : 09/02/2017; 22/09/2017 : PMSI 2017 en entier */
***sejours IVG, on se rapporte à l'acte pour dissocier IVG médicamenteuses, des IVG instrumentales. UN même séjour peut contenir les 2 TOP, on privilégie la chir sur le médicamenteux à ce moment là */ ;
PROC SQL;
drop table sej_IVG;
%connectora;
create table sej_IVG as
select * from connection to oracle (
SELECT t1.ETA_NUM,
t1.GRG_GHM,
t4.soc_rai,
T1.BDI_COD,
T1.age_ANN,
case when T3.cdc_act='JNJP001' then 1 else 0 end as top_med,/* IVG medicamenteuse*/
case when T3.cdc_act='JNJD002' then 1 else 0 end as top_chir, /* IVG instrumentales*/
count (distinct (T1.ETA_NUM||t1.RSA_NUM)) as nb_sej, /* on compte les séjours*/
count(distinct T2.NIR_ANO_17) as nb_patient,
sum(T3.NBR_EXE_ACT) as nb_acte
FROM T_MCO17B t1, T_MCO17C t2, T_MCO17A t3, T_MCO17E t4
WHERE t1.rsa_num=t2.rsa_num
AND T1.eta_num=t2.eta_num
and t1.eta_num=T4.eta_num
and t1.eta_num=T3.eta_num
and t1.rsa_num=t3.rsa_num
AND t1.GRG_GHM in ('14Z08Z')
and substr(T1.bdi_cod,1,2) in ('14','50','61','27','76') /**** à changer ***/
and T3.cdc_act in ('JNJP001', 'JNJD002')
and T3.pha_act='0'
and T3.acv_act='1'
and T1.eta_num not in
('130780521', '130783236', '130783293', '130784234', '130804297', '600100101', '750041543', '750100018', '750100042', '750100075',
'750100083', '750100091', '750100109', '750100125', '750100166', '750100208', '750100216', '750100232', '750100273', '750100299' ,
'750801441', '750803447', '750803454', '910100015', '910100023', '920100013', '920100021', '920100039', '920100047', '920100054',
'920100062', '930100011', '930100037', '930100045', '940100027', '940100035', '940100043', '940100050', '940100068', '950100016',
'690783154', '690784137', '690784152', '690784178', '690787478', '830100558')
GROUP BY t1.ETA_NUM,
t1.GRG_GHM,
t4.soc_rai,
T1.BDI_COD,
T1.age_ANN,
case when T3.cdc_act='JNJP001' then 1 else 0 end,
case when T3.cdc_act='JNJD002' then 1 else 0 end
);
disconnect from oracle;
quit;
data sej_IVG; set sej_IVG;
length classe_age $50;
if age_ann<18 then classe_age ="[0-17]";
if 18 <=age_ann<=24 then classe_age='[18-24]';
if 25 <=age_ann<=29 then classe_age='[25-29]';
if 30 <=age_ann<=39 then classe_age='[30-39]';
if 40 <=age_ann<=49 then classe_age='[40-49]';
if 50 <=age_ann<=59 then classe_age='[50-59]';
if 60 <=age_ann<=69 then classe_age='[60-69]';
if 70 <=age_ann<=79 then classe_age='[70-79]';
if 80 <=age_ann<=89 then classe_age='[80-89]';
if age_ann> 90 then classe_age='[90+]';
run;
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
option mprint symbolgen;
/********************************************************************/
/****Estimation du non recours à partir de la méthodo de l'observatoire des fragilites
-pas de soin sur 24 mois
-on ne considère pas les individus arrivés au cours de ces 24 mois
-on enleve les moins de 16 ans
Attention IR_BEN_R n'est pas un référentiel des bénéficiaires, les non-consommants de la MSA et RSI n'y sont pas ! on extrapole donc le comportement des bénéficiaires du régime général.
--Céline LEROY ARS NORMANDIE profil 84
*/
/*****************************************************************/
/***Entrée des paramètres ***/
* Liste du ou des département entre cote avec virgule si plusieurs;
%LET DEPT ='014','027','050','061','076';
*%LET DEPT ='018','028','036','037','041','045';
* FIN des paramètres en entrée;
/********************************************************************************/
/**Partie 1 : non recours aux soins */
/*********************************************************************************/
PROC SQL;
CREATE TABLE WORK.POP_REF AS
SELECT t1.BEN_RES_DPT,
t1.BEN_RES_COM,
/* (COUNT(DISTINCT(case when t1.BEN_TOP_CNS=1 then t1.BEN_IDT_ANO end))) AS NB_CONSO_REF,*/ /* On se sert du TOP Conso */
/*(COUNT(DISTINCT(t1.BEN_NIR_PSA ||put(t1.BEN_RNG_GEM,2.))))as NB_TOT_REF,*/
(count(distinct t1.BEN_IDT_ANO)) as NB_TOT_REF2
FROM ORAVUE.IR_BEN_R t1
WHERE t1.BEN_RES_DPT in(&DEPT)
AND (SUBSTR(t1.ORG_AFF_BEN,1,3) in('01C','06A','07A','10A','90A')
OR (SUBSTR(t1.ORG_AFF_BEN,1,3)='01M' AND SUBSTR(t1.ORG_AFF_BEN,7,3)in('619','537','599','619','516','601','603','604'))
/* attention pas MSA/RSI */ )
AND (t1.BEN_NAI_ANN < '2002' AND t1.ben_nai_ann>'1600' /* Elimination des naissances après 2002*/ /*or t1.ben_NAI_ann>'2012'*/)
AND (t1.BEN_DCD_AME > '201612' OR t1.BEN_DCD_AME = '160001') /* Elimination décédes antérieurs à 2017 en gardant les vivants!!*/
/*AND T1.max_trt_dtd> to_date('20161231','YYYYMMDD') */
AND BEN_DTE_INS <'31DEC2015:0:0:0'dt
GROUP BY t1.BEN_RES_DPT,
t1.BEN_RES_COM;
QUIT;
PROC SQL;
CREATE TABLE WORK.POP_CONSO AS
SELECT t1.BEN_RES_DPT,
t1.BEN_RES_COM,
/*(COUNT(DISTINCT(case when t1.BEN_TOP_CNS=1 then (t1.BEN_NIR_PSA ||put(t1.BEN_RNG_GEM,2.)) end))) AS NB_CONSO_REF_2016,/* On se sert du TOP Conso */
(COUNT(DISTINCT(case when t1.BEN_TOP_CNS=1 then ben_idt_ano end))) AS NB_CONSO_REF_2016bis
/*(COUNT(DISTINCT(t1.BEN_IDT_ANO))) AS NB_TOT_REF*/
FROM ORAVUE.IR_BEN_R t1
WHERE t1.BEN_RES_DPT in(&DEPT)
AND (SUBSTR(t1.ORG_AFF_BEN,1,3) in('01C','06A','07A','10A','90A')
OR (SUBSTR(t1.ORG_AFF_BEN,1,3)='01M' AND SUBSTR(t1.ORG_AFF_BEN,7,3)in('619','537','599','619','516','601','603','604'))
/* attention pas MSA/RSI */ )
AND (t1.BEN_NAI_ANN < '2002' AND t1.ben_nai_ann>'1600'/* Elimination des naissances après 2002*/ /*or t1.ben_NAI_ann>'2012'*/)
AND (t1.BEN_DCD_AME > '201612' OR t1.BEN_DCD_AME = '160001') /* Elimination décédes antérieurs à 2017 en gardant les vivants!!*/
AND t1.max_trt_dtd > '31DEC2015:0:0:0'dt
AND BEN_DTE_INS <'31DEC2015:0:0:0'dt
GROUP BY t1.BEN_RES_DPT,
t1.BEN_RES_COM;
QUIT;
proc sql;
create table pop_conso_tot as select *
from pop_ref a,pop_conso b
where a.ben_res_dpt=b.ben_res_dpt
and a.ben_res_com=b.ben_res_com;
run;
* Note En infra départementales on élimine les militaires '08A';
/*** SLM
la mutuelle générale LMG 01MXXX619,
 la mutuelle générale de la police MGP 01MXXX537,
 MFP service MFPS 01MXXX599,
 la mutuelle nationale des hospitaliers MNH 01MXXX619,
 Harmonie fonction publique HFP 01MXXX516,
 la mutuelle des étudiants LMDE (depuis janvier 2017) 01MXXX601,
 la caisse d’assurance maladie des industries électriques et gazières CAMIEG 01MXXX603,
 la mutuelle du ministère de l’intérieur Intériale 01MXXX604,
***/
* Correction des code communes erronés;
* même manip que précédemment;
PROC SQL;
CREATE TABLE sasdata1.POP_REF_CORR AS
SELECT distinct
case when t2.CODE_INSEE is not null then t2.CODE_INSEE else substr(t1.BEN_RES_DPT,2,2)||t1.BEN_RES_COM end as cod_comm ,
t2.LIBELLE_DE_LA_COMMUNE,
/*sum(t1.NB_CONSO_REF_2016) AS NB_CONSO_REF_2016, */
/* sum(t1.NB_TOT_REF) AS NB_TOT_REF,*/
sum(t1.NB_CONSO_REF_2016bis) AS NB_CONSO_REF_2016bis,
sum(t1.NB_TOT_REF2) AS NB_TOT_REF2
FROM WORK.POP_CONSO_tot t1
LEFT JOIN RFCOMMUN.T_FIN_GEO_LOC_FRANCE t2 ON (substr(t1.BEN_RES_DPT,2,2)||t1.BEN_RES_COM = t2.CODE_JOINTURE)
group by case when t2.CODE_INSEE is not null then t2.CODE_INSEE else t1.BEN_RES_DPT||t1.BEN_RES_COM end ,
t2.LIBELLE_DE_LA_COMMUNE;
QUIT;
option mprint symbolgen;
/********************************************************************/
/****Estimation du taux de recours par commune au MG sur 2017 */
/*****************************************************************/
/***Entrée des paramètres ***/
* Liste du ou des département entre cote avec virgule si plusieurs;
%LET DEPT ='014','027','050','061','076';
*%LET DEPT ='018','028','036','037','041','045';
* FIN des paramètres en entrée;
/**************************************************************************/
/**Partie 1 : calcul des benef MG et des consommants de la Table PRS */
/**************************************************************************/
/* Numérateur : Nb de benef ayant eu recours au MG (Libéraux et Centre de Santé)*/
PROC SQL;
%connectora;
create table BEN_CONS_MG as
select * from connection to oracle (
SELECT distinct BEN_RES_DPT,
BEN_RES_COM ,
count(distinct ben_idt_ano) as nb_patient_mg
FROM ns_prs_f
WHERE EXE_SOI_DTD BETWEEN to_date('20170101','YYYYMMDD') AND to_date('20171231','YYYYMMDD')
and (ETE_IND_TAA not in (1) OR ETE_IND_TAA is null )/* on enleve Fides*/
AND prs_nat_ref not in (1124, 1130, 1147, 1128, 1144,1915, 1916, 1917,
1990, 1991,1992,1993,1994,1995,1996,1997,1998,1999,1718,1145, 1146,1142,1143,
1628,1629,1630,1631,1632,1633,1634,1635,1636,1637,1638,1639,1150, 1160, 1161, 1162,
1640, 1641, 1642,1956,1951,1952) /* Elimination des forfaits autres prestations n'étant pas du soins (cf maquette Stat mens) */
AND exe_soi_amd BETWEEN '201701' AND '201712'
AND pse_spe_cod in (1,22,23)
AND BEN_RES_DPT in (&DEPT)
group by BEN_RES_DPT,BEN_RES_COM);
disconnect from oracle;
quit ;
/* Dénominateur : Nb de benef ayant eu une prestation de remboursé y compris FIDES */
PROC SQL;
%connectora;
create table BEN_CONS_PRS as
select * from connection to oracle (
SELECT distinct BEN_RES_DPT,
BEN_RES_COM ,
count(distinct ben_idt_ano) as nb_patient_conso
FROM ns_prs_f
WHERE EXE_SOI_DTD BETWEEN to_date('20170101','YYYYMMDD') AND to_date('20171231','YYYYMMDD')
AND exe_soi_amd BETWEEN '201701' AND '201712'
AND BEN_RES_DPT in (&DEPT)
group by BEN_RES_DPT,BEN_RES_COM);
disconnect from oracle;
quit ;
* Correction des code communes erronés sur les 2 tables ;
* Utilisation de la table T_FIN_GEO_LOC (ARSIF) pour réafffecter les codes INSEE;
* On utilise la LEFT JOIN pour ne pas éliminer éventuellement des codes non connus;
* On récupère aussi le libellé de la commune;
PROC SQL;
CREATE TABLE WORK.BEN_CONS_MG_CORR AS
SELECT distinct
case when t2.CODE_INSEE is not null then t2.CODE_INSEE else substr(t1.BEN_RES_DPT,2,2)||t1.BEN_RES_COM end as cod_comm ,
t2.LIBELLE_DE_LA_COMMUNE,
sum(t1.nb_patient_mg) AS nb_patient_mg
FROM WORK.BEN_CONS_MG t1
LEFT JOIN PRFEXT.T_FIN_GEO_LOC_FRANCE t2 ON (substr(t1.BEN_RES_DPT,2,2)||t1.BEN_RES_COM = t2.CODE_JOINTURE)
group by case when t2.CODE_INSEE is not null then t2.CODE_INSEE else t1.BEN_RES_DPT||t1.BEN_RES_COM end ,
t2.LIBELLE_DE_LA_COMMUNE;
QUIT;
PROC SQL;
CREATE TABLE WORK.BEN_CONS_PRS_CORR AS
SELECT distinct
case when t2.CODE_INSEE is not null then t2.CODE_INSEE else substr(t1.BEN_RES_DPT,2,2)||t1.BEN_RES_COM end as cod_comm ,
t2.LIBELLE_DE_LA_COMMUNE,
sum(t1.nb_patient_conso) AS nb_patient_conso
FROM WORK.BEN_CONS_PRS t1
LEFT JOIN PRFEXT.T_FIN_GEO_LOC_FRANCE t2 ON (substr(t1.BEN_RES_DPT,2,2)||t1.BEN_RES_COM = t2.CODE_JOINTURE)
group by case when t2.CODE_INSEE is not null then t2.CODE_INSEE else t1.BEN_RES_DPT||t1.BEN_RES_COM end ,
t2.LIBELLE_DE_LA_COMMUNE;
QUIT;
/********************************************************************************/
/**Partie 2 : calcul des benef consommants et non consommant sur IR_IBA_R */
/* on ne retient que les Régimes et SLM qui reemontent l'info de Non consommants */
/*********************************************************************************/
* Note En infra départementales on élimine les militaires '08A';
/*** SLM
la mutuelle générale LMG 01MXXX619,
 la mutuelle générale de la police MGP 01MXXX537,
 MFP service MFPS 01MXXX599,
 la mutuelle nationale des hospitaliers MNH 01MXXX619,
 Harmonie fonction publique HFP 01MXXX516,
 la mutuelle des étudiants LMDE (depuis janvier 2017) 01MXXX601,
 la caisse d’assurance maladie des industries électriques et gazières CAMIEG 01MXXX603,
 la mutuelle du ministère de l’intérieur Intériale 01MXXX604,
***/
PROC SQL;
CREATE TABLE WORK.POP_CONSO_NONCONSO AS
SELECT t1.BEN_RES_DPT,
t1.BEN_RES_COM,
(COUNT(DISTINCT(case when t1.BEN_TOP_CNS=1 then t1.BEN_IDT_ANO end))) AS NB_CONSO_REF, /* On se sert du TOP Conso */
(COUNT(DISTINCT(t1.BEN_IDT_ANO))) AS NB_TOT_REF
FROM ORAVUE.IR_IBA_R t1
WHERE t1.BEN_RES_DPT in(&DEPT)
AND (SUBSTR(t1.ORG_AFF_BEN,1,3) in('01C','06A','07A','10A','90A')
OR (SUBSTR(t1.ORG_AFF_BEN,1,3)='01M' AND SUBSTR(t1.ORG_AFF_BEN,7,3)in('619','537','599','619','516','601','603','604'))
)
AND t1.BEN_NAI_ANN < '2018' /* Elimination des naissances 2018*/
AND (t1.BEN_DCD_AME > '201612' OR t1.BEN_DCD_AME = '160001') /* Elimination décédes antérieurs à 2017 en gardant les vivants!!*/
GROUP BY t1.BEN_RES_DPT,
t1.BEN_RES_COM;
QUIT;
* Correction des code communes erronés;
* même manip que précédemment;
PROC SQL;
CREATE TABLE WORK.POP_REF_CORR AS
SELECT distinct
case when t2.CODE_INSEE is not null then t2.CODE_INSEE else substr(t1.BEN_RES_DPT,2,2)||t1.BEN_RES_COM end as cod_comm ,
t2.LIBELLE_DE_LA_COMMUNE,
sum(t1.NB_CONSO_REF) AS NB_CONSO_REF ,
sum(t1.NB_TOT_REF) AS NB_TOT_REF
FROM WORK.POP_CONSO_NONCONSO t1
LEFT JOIN PRFEXT.T_FIN_GEO_LOC_FRANCE t2 ON (substr(t1.BEN_RES_DPT,2,2)||t1.BEN_RES_COM = t2.CODE_JOINTURE)
group by case when t2.CODE_INSEE is not null then t2.CODE_INSEE else t1.BEN_RES_DPT||t1.BEN_RES_COM end ,
t2.LIBELLE_DE_LA_COMMUNE;
QUIT;
* On rassemble tous les résultats en 1 table par un MERGE;
proc sort data=BEN_CONS_MG_CORR;
by cod_comm libelle_de_la_commune;
run;
proc sort data=BEN_CONS_PRS_CORR;
by cod_comm libelle_de_la_commune;
run;
proc sort data=POP_REF_CORR;
by cod_comm libelle_de_la_commune;
run;
data result;
merge POP_REF_CORR BEN_CONS_PRS_CORR BEN_CONS_MG_CORR;
by cod_comm libelle_de_la_commune;
est_txrecours=(nb_patient_mg/nb_patient_conso)*( NB_CONSO_REF/NB_TOT_REF) ; * Le taux de recours est le produit des 2 taux;
format est_txrecours nlpct20.1;
run;
/**************************************************************************************************/
/*********************************ALZHEIMER *******************************************************/
/* LEROY (ARS NORM.) & BROCCA (ARS CVL) */
/**************************************************************************************************/
/* on utilise les codes CIM 10 et non le numero d'ALD qui n'est pas tjs bien renseigne et pas forcement stable dans le temps: une table de correspondance IR_CIM_V existe pour
identifier la correspondance ALD et Code CIM10 */
/* IR_IMB_R est une table france entire */
/* parametre en entree*/
%let ddd=20180101;
%let ddf=20181231;
%let dpt='014','027','050','061','076';
/** rcupereation de tous les bnf avec une ALD active en 2017 dans le IR_IMB_R;*/
proc sql;
drop table ald_alzeihmer;
%connectora;
create table ald_alzeihmer as
select * from connection to oracle (select
BEN_NIR_PSA,
BEN_RNG_GEM,
IMB_ALD_NUM,
IMB_ALD_DTD,
IMB_ALD_DTF,
MED_MTF_COD
from IR_IMB_R
where IMB_ALD_DTD <=to_date(&ddd.,'YYYYMMDD')
and (IMB_ALD_DTF>=to_date(&ddf.,'YYYYMMDD') or IMB_ALD_DTF=to_date ('16000101','YYYYMMDD'))
and substr(MED_MTF_COD,1,3) in ('F00','F01','F02','F03','G30')
);
disconnect from oracle;
quit;
/** On cre une table avec une ligne par patient ALD **/
/** On tope si le patient a une ALD Alzheimer active et/ou Autre dmences **/
/** creation d'un boolean pour faire un top */
proc sql;
create table ald_alz as select distinct
ben_nir_psa, ben_rng_gem ,max (case when substr(MED_MTF_COD,1,3) in ('F00','G30') then 1 else 0 end) as top_alz_ald,
max (case when substr(MED_MTF_COD,1,3) not in ('F00','G30') then 1 else 0 end) as top_demence_ald from ald_alzeihmer
group by ben_nir_psa, ben_rng_gem ;
quit;
/* on met la table dans ORAUSER pour faire jointure avec IR_BEN_R (recuperation du Departement) */
proc sql;
create table orauser.ald_alz as select * from work.ald_alz;
quit;
proc sql;
drop table ald_alzdept;
%connectora;
create table ald_alzdept as
select * from connection to oracle (select
t2.BEN_RES_DPT,
t1.BEN_NIR_PSA,
t1.BEN_RNG_GEM,
top_alz_ald,
top_demence_ald
from ald_alz t1 left join IR_BEN_R t2 on (T1.BEN_NIR_PSA=t2.BEN_NIR_PSA
and t1.BEN_RNG_GEM=t2.BEN_RNG_GEM)
);
disconnect from oracle;
quit;
proc sql;
create table final_ALD as select
ben_res_dpt,
sum(top_alz_ald) as nb_alz_ald,
sum(top_demence_ald) as nb_demence
from ald_alzdept
group by 1;
quit;
proc sQL;
create table restitution_dpt as select * from final_ald
where ben_res_dpt in (&dpt.);
quit;
This source diff could not be displayed because it is too large. You can view the blob instead.
/**********************************************************************************************************
/**national
/**********************************************************************************************************/
option mprint symbolgen;
/********************************************************************/
/****Estimation de la population protégée RG+SLM qui va nous servir
/*****de dénominateur pour la carto des patho
*/
/*****************************************************************/
/***Entrée des paramètres ***/
* Liste du ou des département entre cote avec virgule si plusieurs;
%LET DEPT ='014','027','050','061','076';
%let ANNEE=2015;
PROC SQL;
DROP TABLE SASDATA1.POP_conso_non_conso_nat;
CREATE TABLE sasdata1.POP_CONSO_NONCONSO_nat AS
SELECT distinct
t1.BEN_SEX_COD,
case when (&annee-INPUT(t1.BEN_NAI_ANN,4.))<=9 then "[0-9]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=10 and((&annee-INPUT(t1.BEN_NAI_ANN,4.))<20)) then "[10-19]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=20 and ((&annee-INPUT(t1.BEN_NAI_ANN,4.))<30)) then "[20-29]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=30 and ((&annee-INPUT(t1.BEN_NAI_ANN,4.))<40)) then "[30-39]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=40 and ((&annee-INPUT(t1.BEN_NAI_ANN,4.))<50)) then "[40-49]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=50 and ((&annee-INPUT(t1.BEN_NAI_ANN,4.))<60)) then "[50-59]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=60 and ((&annee-INPUT(t1.BEN_NAI_ANN,4.))<70)) then "[60-69]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=70 and ((&annee-INPUT(t1.BEN_NAI_ANN,4.))<80)) then "[70-79]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=80 and ((&annee-INPUT(t1.BEN_NAI_ANN,4.))<90)) then "[80-89]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=90 and ((&annee-INPUT(t1.BEN_NAI_ANN,4.))<150)) then "[90+]"
end as class_age,
/*t1.BEN_RES_DPT,
t1.BEN_RES_COM, */
(COUNT(DISTINCT(case when t1.BEN_TOP_CNS=1 then t1.BEN_IDT_ANO end))) AS NB_CONSO_REF, /* On se sert du TOP Conso */
(COUNT(DISTINCT(t1.BEN_IDT_ANO))) AS NB_TOT_REF
FROM ORAVUE.IR_BEN_R t1
WHERE /*t1.BEN_RES_DPT in(&DEPT)
AND*/ (SUBSTR(t1.ORG_AFF_BEN,1,3) in('01C'/*,'06A','07A','10A','90A'*/)
OR (SUBSTR(t1.ORG_AFF_BEN,1,3)='01M' AND SUBSTR(t1.ORG_AFF_BEN,7,3)in('619','537','599','619','516','601','603','604'))
)
AND t1.BEN_NAI_ANN < '2016' /* Elimination des naissances 2017*/
AND (t1.BEN_DCD_AME > '201512' OR t1.BEN_DCD_AME = '160001') /* Elimination décédes antérieurs à 2017 en gardant les vivants!!*/
AND t1.BEN_NAI_ANN not in ('160001')
GROUP BY /*t1.BEN_RES_DPT,
t1.BEN_RES_COM,*/
t1.BEN_SEX_COD,
class_age
;
QUIT;
option mprint symbolgen;
/********************************************************************/
/****Estimation de la population protégée RG+SLM qui va nous servir
/*****de dénominateur pour la carto des patho
*/
/*****************************************************************/
/***Entrée des paramètres ***/
* Liste du ou des département entre cote avec virgule si plusieurs;
%LET DEPT ='014','027','050','061','076';
%let ANNEE=2015;
* FIN des paramètres en entrée;
/********************************************************************************/
/** calcul des benef consommants et non consommant sur IR_BEN_R */
/* on ne retient que les Régimes et SLM qui reemontent l'info de Non consommants */
/*********************************************************************************/
* Note En infra départementales on élimine les militaires '08A';
/*** SLM
la mutuelle générale LMG 01MXXX619,
 la mutuelle générale de la police MGP 01MXXX537,
 MFP service MFPS 01MXXX599,
 la mutuelle nationale des hospitaliers MNH 01MXXX619,
 Harmonie fonction publique HFP 01MXXX516,
 la mutuelle des étudiants LMDE (depuis janvier 2017) 01MXXX601,
 la caisse d’assurance maladie des industries électriques et gazières CAMIEG 01MXXX603,
 la mutuelle du ministère de l’intérieur Intériale 01MXXX604,
***/
PROC SQL;
CREATE TABLE WORK.POP_CONSO_NONCONSO AS
SELECT distinct
t1.BEN_SEX_COD,
case
when (&annee-INPUT(t1.BEN_NAI_ANN,4.))<= 9 then "[0-9]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=10 and((&annee-INPUT(t1.BEN_NAI_ANN,4.))<20)) then "[10-19]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=20 and ((&annee-INPUT(t1.BEN_NAI_ANN,4.))<30)) then "[20-29]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=30 and ((&annee-INPUT(t1.BEN_NAI_ANN,4.))<40)) then "[30-39]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=40 and ((&annee-INPUT(t1.BEN_NAI_ANN,4.))<50)) then "[40-49]"
when ((&annee-INPUT(t1.BEN_NAI_ANN,4.))>=50 and ((&annee-INPUT(t1.BEN_NAI_ANN,4.))<60)) then "[50-59]"