# 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