Bonjour,
Si j’ai bien compris quand on fait une requête dans le DCIR on doit mettre les filtres suivants :
“AND (t1.EXE_SOI_DTD BETWEEN &DEBSOIN AND &FINSOIN)
AND t1.DPN_QLF NOT IN (71,72)
AND t1.PRS_DPN_QLP NOT IN (71,72)”
pour exclure les actes et consultations externes (ACE) et séjours des établissements de santé (non exhaustifs dans le DCIR).
Pour extraire des patients via leur consommation de médicaments, j’ai d’abord cherché en officine via leurs codes CIP dans la table ER_PHA_F et les résultats sont les mêmes qu’on mette ces filtres ou pas (probablement car on va chercher la consommation de médicaments en officine et non en établissement hospitalier).
Mais quand j’applique ces filtres lors de la recherche de consommation de ces médicaments en rétrocession hospitalière dans la table ER_UCD_F j’ai un nombre de patients qui varie selon que j’extrais avec ou sans les filtres. Qqn pourrait m’expliquer s’il faut appliquer ces filtres quand on cherche des médicaments en rétrocession ? à quoi correspondent concrètement ces filtres ? Les rétrocessions hospitalières sont-elles considérées comme des ACE ?
Voila mon code d’extraction de médicaments en rétrocession (avec la magic loop) :
%MACRO MA_REQUETE;
PROC SQL;
CREATE TABLE WORK.CONSO AS
SELECT t4.BEN_IDT_ANO, t4.BEN_NAI_ANN,
t1.BEN_NIR_PSA, t1.BEN_RNG_GEM, t1.BEN_AMA_COD,
t1.EXE_SOI_DTD as EXE_DTE,
t2.UCD_UCD_COD as UCD13,
t2.UCD_DLV_NBR as QUANTITE,
« RETRO » as source
FROM ORAVUE.ER_PRS_F t1
INNER JOIN ORAVUE.ER_UCD_F t2 ON
(t2.DCT_ORD_NUM = t1.DCT_ORD_NUM AND t2.FLX_DIS_DTD = t1.FLX_DIS_DTD AND
t2.FLX_EMT_NUM = t1.FLX_EMT_NUM AND t2.FLX_EMT_ORD = t1.FLX_EMT_ORD AND
t2.FLX_EMT_TYP = t1.FLX_EMT_TYP AND t2.FLX_TRT_DTD = t1.FLX_TRT_DTD AND
t2.PRS_ORD_NUM = t1.PRS_ORD_NUM AND t2.REM_TYP_AFF = t1.REM_TYP_AFF AND
t2.ORG_CLE_NUM = t1.ORG_CLE_NUM)
INNER JOIN ORAVUE.IR_BEN_R t4 ON
(t1.BEN_NIR_PSA = t4.BEN_NIR_PSA AND t1.BEN_RNG_GEM = t4.BEN_RNG_GEM)
/* on AJOUTE les colonnes de la table établissements SANS supprimer les lignes sans correspondance */
/* en l'absence de correspondance dans cette table, la variable sera notée "NULL" */
LEFT JOIN ORAVUE.ER_ETE_F t3 ON
(t3.DCT_ORD_NUM = t1.DCT_ORD_NUM AND t3.FLX_DIS_DTD = t1.FLX_DIS_DTD AND
t3.FLX_EMT_NUM = t1.FLX_EMT_NUM AND t3.FLX_EMT_ORD = t1.FLX_EMT_ORD AND
t3.FLX_EMT_TYP = t1.FLX_EMT_TYP AND t3.FLX_TRT_DTD = t1.FLX_TRT_DTD AND
t3.PRS_ORD_NUM = t1.PRS_ORD_NUM AND t3.REM_TYP_AFF = t1.REM_TYP_AFF AND
t3.ORG_CLE_NUM = t1.ORG_CLE_NUM)
WHERE t1.FLX_DIS_DTD = &DFLUX
AND (t1.EXE_SOI_DTD BETWEEN &DEBSOIN AND &FINSOIN)
AND t1.DPN_QLF NOT IN (71,72) /*Exclure les ACE et séjours des étab. santé ex-DG (dotation globale) car non exhaustif dans DCIR : ceux SANS facturation directe*/
AND t1.PRS_DPN_QLP NOT IN (71,72) /*Idem ci-dessus*/
AND (t3.ETE_IND_TAA <> 1 OR t3.ETE_IND_TAA IS NULL)
AND t1.BEN_CDI_NIR IN ('00') /*Inclure que NIR non fictifs*/
AND t1.BEN_SEX_COD IN (1, 2) /*Inclure hommes et femmes uniquement*/
AND t4.BEN_IDT_TOP = 1 /*Inclure que identifiant unique BEN_IDT_ANO définitif*/
AND t2.UCD_TOP_UCD=0 /*0 si médic rétrocédés, 1 si facturés en sus*/
AND t2.UCD_UCD_COD in ('0000009002127','0000009002128','0000009002129',
'0000009001025', '0000009003554', '0000009002540', '0000009001241',
'0000009427993', '0000009428001', '0000009456776');
QUIT;
%MEND MA_REQUETE;
Merci d’avance !