Bonjour Angélique,
Merci pour votre réponse, dont le premier élément nous est très utile : nous voudrions récupérer tous les actes et consultations externe des hôpitaux publics et privés (considérée comme activité libérale dans le second cas) ainsi que les consultations et actes qui ont lieu en centre de santé ou autre établissement de santé public ou privé. Ainsi nous pouvons utiliser votre filtre pour ne conserver que les établissements privés de ER_ETE_F, et trouver leur contrepartie publique dans les tables CSTC (informations patient) chaînées avec FCSTC (lorsque exe_spe n’est pas absent) ? Nous filtrons dans ER_PRS_F sur pse_spe_cod qui permet de conserver les médecins sur lesquels nous travaillons.
Concernant ER_ETE_F, lorsqu’un praticien exerce dans une clinique ou un centre de santé en libéral et facture en son nom, apparait-il systématiquement dans ER_ETE_F (avec le FINESS de l’établissement) ? Ou les lignes peuvent-elles n’apparaitre que dans ER_PRS_F ? Certains volumes d’activité nous semblent faibles (mais surtout pour les centres dentaires) d’où cette interrogation sur l’implication (travail effectué dans un centre muni d’un FINESS) => (activité apparait dans ER_ETE_F).
Enfin, le code en question, qui comtpe plus de lignes dans la table issue de ER_ETE_F que dans celle qui résulte de la jointure avce ER_PRS_F (la dernière instruction vérifie qu’il n’existe bien qu’une ligne dans ER_ETE_F par clé de jointure existant dans ER_PRS_F, je ne sais pas si une ligne dans ER_PRS_F peut amener à plusieurs lignes dans les tables affinées ?)
Merci pour votre temps,
Bien cordialement,
Raphaël
proc sql; drop table orauser.wittenheim;
create table orauser.wittenheim as select * from oravue.er_ete_f where
etb_exe_fin=‹ 68001181 ›;quit;
/*1028 lignes */
%let DEBUT = 20130101; /*Date de Debut de Soins sous la forme AAAAMMJJ, conserver le nom de la variable */
%let FIN = 20141231; /*Date de Fin de Soins sous la forme AAAAMMJJ, conserver le nom de la variable. */
/* Paramètres pour la macro magic_loop - NE PAS MODIFIER /
%LET BORNE = 1; / 1 : Oui 0 : Non. Indique si on a une Date de fin soins en parametre de la requete. Si 0 La date de fin de soins sera celle du dernier mois dispo*/
%LET NBFLUX = 24; /* Indique le Nombre de mois de Flux prix en compte apres Date de Fin de Soins Modification du Parametre non necessaire si si BORNE=0 */
/* Années pour le traitement des tables PMSI */
%let annee_debut = %substr(&DEBUT, 3, 2);
%let annee_fin = %substr(&FIN, 3, 2);
%MACRO MA_REQUETE;
proc sql;
create table conso as select * from orauser.wittenheim ete inner join
oravue.er_prs_f t1 on
t1.DCT_ORD_NUM = ete.DCT_ORD_NUM
AND t1.FLX_DIS_DTD = ete.FLX_DIS_DTD
AND t1.FLX_EMT_NUM = ete.FLX_EMT_NUM
AND t1.FLX_EMT_ORD = ete.FLX_EMT_ORD
AND t1.FLX_EMT_TYP = ete.FLX_EMT_TYP
AND t1.FLX_TRT_DTD = ete.FLX_TRT_DTD
AND t1.PRS_ORD_NUM = ete.PRS_ORD_NUM
/AND t1.REM_TYP_AFF = ete.REM_TYP_AFF/
AND t1.ORG_CLE_NUM = ete.ORG_CLE_NUM
where
t1.FLX_DIS_DTD = &DFLUX
AND (t1.EXE_SOI_DTD BETWEEN &DEBSOIN AND &FINSOIN );quit;
%MEND MA_REQUETE;
%m_magic_loop;
/800 lignes dans jointure er prs f et wittenheim/
proc sort data=orauser.wittenheim
out=table_sans_doublon
dupout=table_doublons;
by
DCT_ORD_NUM
FLX_DIS_DTD
FLX_EMT_NUM
FLX_EMT_ORD
FLX_EMT_TYP
FLX_TRT_DTD
PRS_ORD_NUM
ORG_CLE_NUM
;
run;