# Traitement préliminaire des tables du DCIR
Afin d'éviter de faire systématiquement la jointure entre la table des prestations ER_PRS_F, une table affinée ER_XXX_F, on effectue un prétraitement des tables du DCIR utilisées en remplaçant les 9 clés de jointure par la variable dcir_key_id, et en ne sélectionnant que les variables utiles. On ajoute également une clé permettant d'identifier une visite de façon unique dans le DCIR, dcir_visit_id, construite à partir de 11 variables. En outre, lors de ce pré-traitement, on prend en compte les régularisations, c'est à dire qu'une même prestation peut comporter plusieurs lignes, typiquement :
- une ligne erronée
- une ligne qui annule la première ligne
- une ligne de correction
Pour ce faire :
On joint la table affinée avec ER_PRS_F en ne récupérant que les variables d'intérêt
On somme la variable de quantité en groupant par :
- ben_nir_psa,
- ben_rng_gem,
- exe_soi_dtd,
- ben_res_dpt,
- org_aff_ben,
- pse_spe_cod,
- psp_spe_cod
- variable quantité de la table affinées
- code acte, médicament, etc de la table affinée
On indexe sur la nouvelle variable dcir_visit_id
On filtre en ne prenant que les actes dont la quantité est positive
NB : Pour ER_CAM_F, la quantité se trouve dans ER_PRS_F
# _ER_PRS_F
Variable | Provenance | Description | Filtre |
ben_nir_psa | ER_PRS_F | ||
etb_pre_fin | ER_PRS_F | ||
exe_soi_dtd | ER_PRS_F | ||
exe_soi_dtf | ER_PRS_F | ||
prs_nat_ref | ER_PRS_F | ||
pfs_exe_num | ER_PRS_F | ||
pse_spe_cod | ER_PRS_F | ||
pse_act_nat | ER_PRS_F | ||
psp_spe_cod | ER_PRS_F | ||
psp_act_nat | ER_PRS_F | ||
pre_pre_dtd | ER_PRS_F | ||
prs_act_qte | ER_PRS_F | ||
cpl_maj_top | ER_PRS_F | ||
dcir_key_id | Calculé | hachage des 9 clés de jointure du DCIR | dpn_qlf <> ‘71’ et prs_dpn_qlp <> ‘71’ (on retire les lignes transmises pour information et ne font pas l’objet d’un remboursement) |
dcir_visit_id | Calculé | hachage(ben_nir_psa, ben_rng_gem, COALESCE(etb_exe_fin, etb_pre_fin, ‘0’), exe_soi_dtd, exe_soi_amd, exe_soi_dtf, prs_nat_ref, pfs_exe_num, pfs_pre_num, org_cle_new) | |
etb_exe_fin | ER_ETE_F |
# _ER_ETE_F
Certaines prestations de la table ER_ETE_F concernent les actes et consultations externes des hôpitaux publics, on retire ces prestations avec le filtre ete_ind_taa <> 1.
Variable | Table d’origine | Description | Filtre |
etb_exe_fin | ER_ETE_F | ||
ete_cat_cod | ER_ETE_F | ||
etb_cat_rg1 | IR_CET_V | Joindre ET_ETE_F avec IR_CET_V sur ete_cat_cod = etb_cat_cod | |
etb_pre_fin | _ER_PRS_F | ||
ben_nir_psa | _ER_PRS_F | ||
prs_nat_ref | _ER_PRS_F | ||
pse_spe_cod | _ER_PRS_F | ||
pse_act_nat | _ER_PRS_F | ||
exe_soi_dtd | _ER_PRS_F | ||
exe_soi_dtf | _ER_PRS_F | ||
dcir_visit_id | _ER_PRS_F | ||
prs_nat_ref | _ER_PRS_F | ||
quantity | calculé | Régularisation : somme des quantités associées à une même visite : SUM(prs_act_qte) |
# _ER_PHA_F
Variable | Provenance | Description | Filtre |
pha_prs_c13 | ER_PHA_F | pha_prs_c13!= 0 | |
quantity | calculé | Nombre de doses (pilules, gouttes, etc.) administrées à une personne. Calculé à partir de pha_upc_nbr et pha_act_qsn (Le calcul des quantités est réalisé dans une macro (drug_cases) détaillée dans la partie Macros) Pour obtenir pha_dos_unt_dses → joindre ER_PHA_F à IR_PHA_R sur pha_prs_c13 = pha_cip_c13 | |
pha_dos_uni | IR_PHA_R | unité du médicament | |
psp_spe_cod | _ER_PRS_F | ||
psp_act_nat | _ER_PRS_F | ||
etb_pre_fin | _ER_PRS_F | ||
pre_pre_dtd | _ER_PRS_F | Date de dispensation en pharmacie si elle existe, sinon date de prescription du médicament : COALESCE(exe_soi_dtd, pre_pre_dtd ) | |
dcir_visit_id | _ER_PRS_F |
# Code utilisé pour calculer la variable quantity :
CASE
WHEN pha_upc_nbr IS NULL -- Certaines doses de médicaments sont pas dans IR_PHA_R
THEN SUM(a.pha_act_qsn) -- On garde le nombre de boites
WHEN (POSITION('+' IN pha_upc_nbr) \> 0) -- Certains médicaments sont sous la forme 3 pilules + 5 sachets : il est impossible de savoir lequel garder
THEN SUM(a.pha_act_qsn) -- On garde juste le nombre de boites
WHEN (POSITION('/' IN pha_upc_nbr) = 0) -- doses de la forme "3 DOSES" ou "3", ce qui signifie que la boite contient 3 doses (solides ou liquides) et 3 doses solides.
THEN
(CASE
WHEN (POSITION(' ' IN pha_upc_nbr) \> 0) -- Cas pour "3 doses"
THEN CAST(SUBSTR(pha_upc_nbr, 0, POSITION(\' \' IN pha_upc_nbr)) AS INTEGER) \* SUM(a.pha_act_qsn) -- On suppose que la quantité vaut nombre de boites * 3
ELSE -- Cas pour "3"
pha_upc_nbr::integer * SUM(a.pha_act_qsn) -- La quantité est le nombre de boîtes * 3
END)
ELSE -- Lots de la forme 3 / 2 ML (la boîte contient 3 doses de 2 ML)
CAST(SUBSTR(pha_upc_nbr, 0, POSITION('/' IN pha_upc_nbr)) AS INTEGER) * SUM(a.pha_act_qsn) -- on suppose que la quantité est nombre de boîtes * 3
END quantity
# _ER_UCD_F
Variable | Provenance | Description | Filtre |
ucd_ucd_cod | ER_UCD_F | ||
quantity | calculé | Régularisation : somme des quantités associées à une même visite : SUM(ucd_dlv_nbr * sign(prs_act_qte)) | |
psp_spe_cod | _ER_PRS_F | ||
psp_act_nat | _ER_PRS_F | ||
pse_spe_cod | _ER_PRS_F | ||
etb_pre_fin | _ER_PRS_F | ||
pre_pre_dtd | _ER_PRS_F | Date de dispensation si elle existe, sinon date de prescription du médicament : COALESCE(exe_soi_dtd, pre_pre_dtd ) | |
dcir_visit_id | _ER_PRS_F | ||
dcir_key_id | calculé | hachage des 9 clés de jointure du DCIR |
# _ER_BIO_F
Variable | Provenance | Description | Filtre |
bio_prs_ide | ER_BIO_F | ||
etb_pre_fin | _ER_PRS_F | ||
pfs_exe_num | _ER_PRS_F | ||
ben_nir_psa | _ER_PRS_F | ||
exe_soi_dtd | _ER_PRS_F | ||
dcir_visit_id | _ER_PRS_F | ||
quantity | calculé | SUM(bio_act_qsn) de _ER_BIO_F |
# _ER_CAM_F
Variable | Provenance | Description | Filtre |
cam_prs_ide | ER_CAM_F | ||
etb_pre_fin | _ER_PRS_F | ||
ben_nir_psa | _ER_PRS_F | ||
exe_soi_dtd | _ER_PRS_F | ||
dcir_visit_id | _ER_PRS_F | cpl_maj_top < 2 | |
quantity | calculé | SUM(prs_act_qte) avec prs_act_qte de _ER_PRS_F |
# _ER_TIP_F
Variable | Provenance | Description | Filtre |
tip_prs_ide | ER_TIP_F | ||
tip_acl_dtd | ER_TIP_F | COALESCE(MAX(tip_acl_dtd), exe_soi_dtd)) | |
tip_acl_dtf | ER_TIP_F | MAX(tip_acl_dtf) | |
tip_act_qsn | ER_TIP_F | sum(tip_act_qsn) | |
tip_prs_typ | ER_TIP_F | ||
etb_pre_fin | _ER_PRS_F | ||
dcir_visit_id | _ER_PRS_F | ||
quantity | calculé | SUM(tip_act_qsn) de ER_TIP_F |